Squashed 'dts/upstream/' changes from 955176a4ff59..fe2d6c49bb4e
authorTom Rini <trini@konsulko.com>
Tue, 27 May 2025 15:02:20 +0000 (09:02 -0600)
committerTom Rini <trini@konsulko.com>
Tue, 27 May 2025 15:02:20 +0000 (09:02 -0600)
fe2d6c49bb4e Merge tag 'v6.15-dts-raw'
3109849be809 Merge tag 'soc-fixes-6.15-3' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
75e59270f7c5 Merge tag 'mvebu-fixes-6.15-1' of https://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu into arm/fixes
69a2cec41405 Merge tag 'sunxi-fixes-for-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into arm/fixes
64a925d7605a dt-bindings: can: microchip,mcp2510: Fix $id path
50d5bacc52a4 Merge tag 'v6.15-rc7-dts-raw'
b8973c10564b Merge tag 'soc-fixes-6.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
c88fc0f02e78 arm64: dts: marvell: uDPU: define pinctrl state for alarm LEDs
63756d9a84f8 Merge tag 'v6.15-rc6-dts-raw'
8de495f56dbd Merge tag 'input-for-v6.15-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
7346db7cb1f5 Merge tag 'imx-fixes-6.15-2' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/fixes
a12444223f6a arm64: dts: amazon: Fix simple-bus node name schema warnings
e605d5d7fe3d Merge tag 'asahi-soc-fixes-6.15' of https://github.com/AsahiLinux/linux into arm/fixes
fff11fe6a218 Merge tag 'riscv-sophgo-dt-fixes-for-v6.15-rc1' of https://github.com/sophgo/linux into arm/fixes
cbdc7e808a47 Merge tag 'amlogic-fixes-for-v6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into arm/fixes
6569e1afaabb Merge tag 'v6.15-rockchip-dtsfixes1' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into arm/fixes
bad970d505c7 arm64: dts: imx8mp-var-som: Fix LDO5 shutdown causing SD card timeout
2498aef1d581 arm64: dts: imx8mp: use 800MHz NoC OPP for nominal drive mode
930a058ee559 Merge tag 'net-6.15-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
75e6b42a413a dt-bindings: net: ethernet-controller: Add informative text about RGMII delays
2fb1a42d2ab9 Merge tag 'soc-fixes-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
95bd2a8dfcd9 arm64: dts: amlogic: dreambox: fix missing clkc_audio node
84ef7812cc93 Merge tag 'v6.15-rc5-dts-raw'
724862669eee Merge tag 'spi-fix-v6.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
e56b01802fc8 riscv: dts: sophgo: fix DMA data-width configuration for CV18xx
f6364dd1ac42 arm64: dts: rockchip: fix Sige5 RTC interrupt pin
b6c1f156299d arm64: dts: st: Use 128kB size for aliased GIC400 register access on stm32mp23 SoCs
40c14b9e5f5e arm64: dts: st: Adjust interrupt-controller for stm32mp23 SoCs
62bf1a9664d4 arm64: dts: st: Use 128kB size for aliased GIC400 register access on stm32mp21 SoCs
fccc8448c30a arm64: dts: st: Adjust interrupt-controller for stm32mp21 SoCs
ad0c99d174ea arm64: dts: st: Use 128kB size for aliased GIC400 register access on stm32mp25 SoCs
282b9c077aae arm64: dts: st: Adjust interrupt-controller for stm32mp25 SoCs
3755c90eab9c Merge tag 'imx-fixes-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/fixes
b4c1abf11ff1 Merge tag 'juno-fix-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux into arm/fixes
c7c3c68f3ce7 dt-bindings: mediatek,mt6779-keypad: Update Mattijs' email address
e4820115982e Merge tag 'v6.15-rc4-dts-raw'
5a4f16f09fb5 arm64: dts: imx8mm-verdin: Link reg_usdhc2_vqmmc to usdhc2
98e5be0c34f6 Revert "arm64: dts: allwinner: h6: Use RSB for AXP805 PMIC connection"
d6354f04cfe0 arm64: dts: rockchip: Assign RT5616 MCLK rate on rk3588-friendlyelec-cm3588
22b5bf714835 arm64: dts: rockchip: Align wifi node name with bindings in CB2
f7cb03107c26 Merge tag 'char-misc-6.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
4acdc261f422 spi: dt-bindings: snps,dw-apb-ssi: Add compatible for SOPHGO SG2042 SoC
2ebbc79f9b14 spi: dt-bindings: snps,dw-apb-ssi: Merge duplicate compatible entry
08939b65ca58 arm64: dts: amlogic: g12: fix reference to unknown/untested PWM clock
73915dad61e7 arm64: dts: amlogic: gx: fix reference to unknown/untested PWM clock
fb321fd7cecd ARM: dts: amlogic: meson8b: fix reference to unknown/untested PWM clock
1499bef2c3a6 ARM: dts: amlogic: meson8: fix reference to unknown/untested PWM clock
a831b6c1c6b9 ARM: dts: opos6ul: add ksz8081 phy properties
3ae5c171fc05 arm64: dts: imx95: Correct the range of PCIe app-reg region
f118c5265c25 arm64: dts: imx8mp: configure GPU and NPU clocks in nominal DTSI
e281122066ea Merge tag 'v6.15-rc3-dts-raw'
1d7ab1ed4277 arm64: dts: apple: touchbar: Mark ps_dispdfr_be as always-on
b0dbfc0c19d7 dt-bindings: soc: fsl: fsl,ls1028a-reset: Fix maintainer entry
775d526af58f dt-bindings: timer: renesas,tpu: remove obsolete binding
739bb43d33b7 dt-bindings: nvmem: Add compatible for MSM8960
52f7f735cf15 dt-bindings: nvmem: Add compatible for IPQ5018
aeb6cb0b5324 dt-bindings: nvmem: fixed-cell: increase bits start value to 31
3a7b208d9e79 dt-bindings: nvmem: Add compatible for MS8937
1c27fc6ffa8e dt-bindings: nvmem: qfprom: Add X1E80100 compatible
d35d917d5816 dt-bindings: nvmem: rockchip,otp: Add compatible for RK3576
759e7828fe78 dt-bindings: nvmem: rockchip,otp: add missing limits for clock-names
e73a3d952883 arm64: dts: morello: Fix-up cache nodes
8386b46f9eda arm64: dts: rockchip: Fix mmc-pwrseq clock name on rock-pi-4
6b71f5ae1a2a arm64: dts: rockchip: Use "regulator-fixed" for btreg on px30-engicam for vcc3v3-btreg
2ed5901a514b dt-bindings: timer: nxp,sysctr-timer: Add i.MX94 support
e58a2db4c38c dt-bindings: interrupt-controller: fsl,irqsteer: Add i.MX94 support
622ce6b1ba08 dt-bindings: display: nwl-dsi: Allow 'data-lanes' property for port@1
e0ef023c67c0 dt-bindings: xilinx: Remove myself from maintainership
0449e8973a84 Merge tag 'v6.15-rc1-dts-raw'
b2db21710501 arm64: dts: rockchip: Add pinmuxing for eMMC on QNAP TS433
28265b46ce50 arm64: dts: rockchip: Remove overdrive-mode OPPs from RK3588J SoC dtsi
314cea8948b0 arm64: dts: rockchip: Allow Turing RK1 cooling fan to spin down
4314a01898d6 Merge tag 'input-for-v6.15-rc0' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
fcf2048dc9de Merge branch 'next' into for-linus
ba6c6579c9bd Merge tag 'riscv-for-linus-6.15-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux
58f1d4c158c0 Merge tag 'rtc-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux
29912193033d Merge tag 'usb-6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
937ed4db2ab8 Merge tag 'tty-6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
ac589474b57a Merge tag 'thermal-6.15-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
6879712ce88d Merge tag 'i3c/for-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux
af2574352383 Merge tag 'linux-watchdog-6.15-rc1' of git://www.linux-watchdog.org/linux-watchdog
e81f3d825b82 Merge tag 'i2c-for-6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
bd876bc870df Merge tag 'dmaengine-6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine
42065dec6c72 Merge tag 'phy-for-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy
301007542d03 Merge tag 'char-misc-6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
33b10181f970 Merge tag 'mm-nonmm-stable-2025-03-30-18-23' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
d4643a038924 Merge patch series "Add some validation for vector, vector crypto and fp stuff"
cac1aa08f484 dt-bindings: rtc: max31335: Add max31331 support
26e04cf9cc79 Merge tag 'mailbox-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/jassibrar/mailbox
576a6900f13c Merge tag 'for-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply
78a2eae6cb86 Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
4194f888d6d6 Merge tag 'rproc-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux
c96994fe39c1 Merge tag 'pinctrl-v6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
a42296696853 Merge tag 'backlight-next-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight
6d0f08e93b76 Merge tag 'leds-next-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds
3bb45cc2ceab Merge tag 'mfd-next-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
72713c04060a Merge tag 'mips_6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux
17102f25116b Merge tag 'devicetree-for-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
e44d9139748a Merge tag 'v6.15-p1' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
b727a6e37d16 Merge tag 'pci-v6.15-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci
b1ec05cb6a63 Merge tag 'drm-next-2025-03-28' of https://gitlab.freedesktop.org/drm/kernel
34c876511338 Merge tag 'for-6.15/io_uring-reg-vec-20250327' of git://git.kernel.dk/linux
ddb37d4776e9 Merge tag 'for-6.15/io_uring-rx-zc-20250325' of git://git.kernel.dk/linux
c0a3226a4218 dt-bindings: i2c: snps,designware-i2c: describe Renesas RZ/N1D variant
f8da42670dd8 Merge tag 'powerpc-6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
38106689da03 dt-bindings: edac: altera: socfpga: Convert to YAML
7fa97aa2cc14 dt-bindings: pps: gpio: Correct indentation and style in DTS example
bc13b6ac45ca Merge branch 'pci/controller/xilinx-cpm'
51fe3683d562 Merge branch 'pci/controller/qcom'
14635816113e Merge branch 'pci/controller/mediatek'
c27d458c9018 Merge branch 'pci/controller/brcmstb'
910bd393ba5a Merge branch 'pci/controller/amd-mdb'
99abd782f5d4 Merge branch 'pci/controller/altera'
2b19e48fbedc Merge branch 'pci/dt-bindings'
ce77e68fec79 Merge tag 'soc-arm-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
c849f132da6e Merge tag 'soc-drivers-6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
253861a5926a Merge tag 'soc-dt-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
b171384a2380 Merge tag 'net-next-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
725971c9baeb Merge tag 'iommu-updates-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux
f39cd579edb7 Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
7f1c5dc0d96a Merge tag 'ata-6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux
1262e5915578 dt-bindings: mailbox: qcom: add compatible for MSM8226 SoC
e81c74aaf2e0 dt-bindings: mailbox: fsl,mu: Add i.MX94 compatible
f4f5865e81fd dt-bindings: mailbox: mediatek: Add support for MT8196 GCE mailbox
e054cac9ae6e Merge tag 'timers-clocksource-2025-03-26' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
b03526c21450 Merge branches 'clk-allwinner', 'clk-amlogic' and 'clk-qcom' into clk-next
a50392a2baf3 Merge branches 'clk-rockchip', 'clk-samsung' and 'clk-imx' into clk-next
e595cb4e5772 Merge branches 'clk-parent', 'clk-renesas', 'clk-mediatek' and 'clk-cleanup' into clk-next
dbd546c62c5c Merge tag 'mtd/for-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux
2eecb8cbb591 Merge tag 'platform-drivers-x86-v6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
9d2cd6a3b1d5 Merge tag 'nand/for-6.15' into mtd/next
bd76b77d4e2c Merge tag 'sound-6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
2f3a8d13a1be Merge tag 'media/v6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
01edfbe94231 Merge tag 'pmdomain-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm
33e6daed2dcb Merge tag 'mmc-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
f661bbffece6 Merge tag 'gpio-updates-for-v6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux
d98043246fc3 Merge tag 'hwmon-for-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
f88a116702ac Merge tag 'pwm/for-6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux
c1e80718e7c0 Merge tag 'spi-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
903bc8c7edc1 Merge tag 'regulator-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
34d2a8ce3d44 Merge tag 'pm-6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
be3477545a1b Merge tag 'for-net-next-2025-03-25' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next
f46587488060 dt-bindings: thermal: Correct indentation and style in DTS example
ed91ea537f6b dt-bindings: thermal: Update for BCM74110
b56a3bd46a79 dt-bindings: thermal: tsens: Add ipq5332, ipq5424 compatible
408f714c8807 Merge tag 'irq-drivers-2025-03-23' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2c7bdd5acc6a dt-bindings: net: bluetooth: nxp: Add support to set BD address
c878bbbc7198 dt-bindings: net: bluetooth: qualcomm: document WCN3950
3ddbb8fb8fe6 dt-bindings: net: bluetooth: nxp: Add wakeup pin properties
a4c451f881ed dt-bindings: net: qcom,ipa: Correct indentation and style in DTS example
86a6733d63fe Merge tag 'wireless-next-2025-03-20' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
8604a4e6caa1 dt-bindings: net: rockchip-dwmac: Add compatible string for RK3528
cacfdfd63704 dt-bindings: riscv: document vector crypto requirements
c9835a4f0732 dt-bindings: riscv: add vector sub-extension dependencies
b21477b0a350 dt-bindings: riscv: d requires f
a77e47812f3f dt-bindings: watchdog: sunxi: add Allwinner A523 compatible string
bf3232c697af Merge tag 'i2c-host-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-mergewindow
8f6d11a83a0a Merge tag 'docs-6.15' of git://git.lwn.net/linux
35477e322ba4 dt-bindings: PCI: Add common schema for devices accessible through PCI BARs
a345b6688502 Merge tag 'asoc-v6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next
2baf484b277c Merge branch 'pm-cpufreq'
67a34184ddf2 dt-bindings: timer: Add SiFive CLINT2
2ddeb4d36e67 Merge tag 'cpufreq-arm-updates-6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm
f8ec1f1d1cc5 dt-bindings: remoteproc: Consolidate SC8180X and SM8150 PAS files
98322a22c22a dt-bindings: hwmon: Add Microchip emc2305 support
e80e09439582 media: dt-bindings: mediatek,vcodec-encoder: Drop assigned-clock properties
d8cea587c006 docs: dt-bindings: Specify ordering for properties within groups
83d44c13a32f dt-bindings: hwmon: Drop stray blank line in the header
28e3e5da1d38 dt-bindings: mfd: syscon: Add microchip,sama7d65-sfrbu
cdb8f10e1aaa dt-bindings: mfd: syscon: Add microchip,sama7d65-ddr3phy
723b3cd19dd1 dt-bindings: i2c: spacemit: add support for K1 SoC
c8e7edc109e3 dt-bindings: i2c: omap: Add mux-states property
6cd4c93c1892 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
0e19f27df8f7 Merge tag 'amlogic-arm-dt-for-v6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into soc/dt
c65eff2dbcf7 Merge tag 'amlogic-arm64-dt-for-v6.15-v2' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into soc/dt
bebc6d8370bf ASoC: wm8904: Add DMIC and DRC support
23803d09fa1b dt-bindings: serial: snps-dw-apb-uart: document RZ/N1 binding without DMA
eb71e94b0058 dt-bindings: serial: snps-dw-apb-uart: Add support for rk3562
819c0d972e58 dt-bindings: serial: fsl-lpuart: support i.MX94
da1dc4f87d0d dt-bindings: serial: samsung: add exynos7870-uart compatible
0791859ab251 Merge tag 'coresight-next-v6.15' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/coresight/linux into char-misc-next
1c289ddb61bc ASoC: dt-bindings: wm8904: Add DMIC, GPIO, MIC and EQ support
64345bc61380 spi: dt-bindings: cdns,qspi-nor: Require some peripheral properties
00c70a06c714 spi: dt-bindings: cdns,qspi-nor: Deprecate the Cadence compatible alone
c7b9fed01f76 spi: dt-bindings: cdns,qspi-nor: Be more descriptive regarding what this controller is
2951fd5da291 arm64: dts: Add gpio_intc node for Amlogic A5 SoCs
b7ea7dda1e2e arm64: dts: Add gpio_intc node for Amlogic A4 SoCs
06138f903a3c Merge branches 'apple/dart', 'arm/smmu/updates', 'arm/smmu/bindings', 'rockchip', 's390', 'core', 'intel/vt-d' and 'amd/amd-vi' into next
8495ad389173 Merge tag 'dt-cleanup-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-dt into soc/dt
a301f99cf614 Merge tag 'tegra-for-6.15-arm-dt' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt
cd03551a294d dt-bindings: gpu: arm,mali-midgard: add exynos7870-mali compatible
5b84d726ddaf Merge tag 'qcom-drivers-for-6.15-2' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/drivers
f10573df66cb Merge tag 'qcom-drivers-for-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/drivers
fa143ab38af1 Merge tag 'amlogic-drivers-for-v6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into soc/drivers
bab3f090d9d3 Merge tag 'reset-for-v6.15' of git://git.pengutronix.de/pza/linux into soc/drivers
e13001093d96 Merge tag 'samsung-drivers-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into soc/drivers
56c3ca45c2c7 Merge tag 'at91-soc-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into soc/arm
3b1e6f959fee Merge tag 'hisi-arm64-dt-for-6.15' of https://github.com/hisilicon/linux-hisi into soc/dt
75357dfed634 Merge tag 'riscv-dt-for-v6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux into soc/dt
9737b7a849d5 Merge tag 'omap-for-v6.15/dt-signed' of https://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap into soc/dt
6432c5392792 Merge tag 'riscv-sophgo-dt-for-v6.15' of https://github.com/sophgo/linux into soc/dt
481e67465dc8 Merge tag 'mvebu-dt64-6.15-1' of https://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu into soc/dt
96e8744cc103 Merge tag 'v6.15-rockchip-dts64-2' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/dt
81ed54132fc0 Merge tag 'zynq-dt-for-6.15' of https://github.com/Xilinx/linux-xlnx into soc/dt
0a2824017157 Merge tag 'zynqmp-dt-for-6.14' of https://github.com/Xilinx/linux-xlnx into soc/dt
4e48222bf65f Merge tag 'sunxi-dt-for-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into soc/dt
b831e4e9bb20 Merge tag 'at91-dt-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into soc/dt
6faf8a6c4970 Merge tag 'stm32-dt-for-v6.15-1' of https://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32 into soc/dt
29c62c6339a6 dt-bindings: deprecate "snps,en-tx-lpi-clockgating" property
ac676ad15ceb ARM: dts: stm32: remove "snps,en-tx-lpi-clockgating" property
a3aeb65b5e21 riscv: dts: starfive: remove "snps,en-tx-lpi-clockgating" property
86032de3cc2d Merge tag 'ieee802154-for-net-next-2025-03-10' of git://git.kernel.org/pub/scm/linux/kernel/git/wpan/wpan-next
e3ae9db04517 dt-bindings: riscv: add Zaamo and Zalrsc ISA extension description
0cb4c6d785dc dt-bindings: i2c: i2c-rk3x: Add rk3562 support
3b5a8c070c44 dt-bindings: i2c: imx-lpi2c: add i.MX94 LPI2C
ce1e60e777db dt-bindings: i2c: qup: Document interconnects
ac988bf5af32 dt-bindings: i2c: qcom,i2c-qup: Document power-domains
9bcf0325b6ae dt-bindings: i2c: exynos5: add exynos7870-hsi2c compatible
497c36ba820d dt-bindings: i2c: samsung,s3c2410: add exynos7870-i2c compatible
2ba4ea354217 dt-bindings: mtd: atmel,dataflash: convert txt to yaml
3813b6843768 dt-bindings: mtd: gpmi-nand: Add compatible string for i.MX8 chips
4ba959479642 ASoC: codecs: Add aw88166 amplifier driver
559db5bb3df6 add sof support on imx95
f42c1e48e1ea dt-bindings: hwmon: Add description for sensor HTU31
3e54d6806c68 spi: Merge up fixes
c4c47e5bb42f regulator: dt-bindings: rtq2208: Cleanup whitespace
1aae375c7c42 regulator: dt-bindings: rtq2208: Mark fixed LDO VOUT property as deprecated
6cf18ee31953 Merge patch series "riscv: Add bfloat16 instruction support"
f306f44643f3 dt-bindings: riscv: add bfloat16 ISA extension description
d1349a8d0aa7 arm64: dts: hi3660: Add property for fixing CPUIdle
8283ad10d5c2 Merge tag 'samsung-pinctrl-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung into devel
bba239dcd4d7 Merge net-next/main to resolve conflicts
ee0acddba296 dt-bindings: rtc: pcf2127: Reference spi-peripheral-props.yaml
eb3c4568ad0b dt-bindings: hwmon: ti,ina2xx: Add INA233 device
26e91a5c1c4d ASoC: dt-bindings: audio-graph-card2: add widgets and hp-det-gpios support
20f74f1fc993 ASoC: dt-bindings: support imx95's CM7 core
79ab7f994af8 Merge branch '20250313110359.242491-1-quic_mmanikan@quicinc.com' into clk-for-6.15
1a7ee5fd2be3 dt-bindings: clock: Add ipq9574 NSSCC clock and reset definitions
7665c77f7cdb dt-bindings: clock: gcc-ipq9574: Add definition for GPLL0_OUT_AUX
832929f7a52a dt-bindings: hwmon: ltc2978: add support for LT717x
7758dfded334 dt-bindings: pinctrl: qcom: Add egpio function for sa8775p
f2341866dbb8 dt-bindings: pinctrl: airoha: Add missing gpio-ranges property
9abb426254c5 dt-bindings: pinctrl: at91-pio4: add microchip,sama7d65-pinctrl
d3812cbd3cf5 dt-bindings: rtc: qcom-pm8xxx: document qcom,no-alarm flag
d2d31cf30f25 dt-bindings: interrupt-controller: Add support for Amlogic A4 and A5 SoCs
91922237393f Merge tag 'v6.14-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into gpio/for-next
49186c87530a dt-bindings: thermal: give OS some leeway in absence of critical-action
b7e2002c7f37 dt-bindings: cpufreq: cpufreq-qcom-hw: Narrow properties on SDX75, SA8775p and SM8650
d3db8a0a1e18 dt-bindings: cpufreq: cpufreq-qcom-hw: Drop redundant minItems:1
9b493bef6c64 dt-bindings: cpufreq: cpufreq-qcom-hw: Add missing constraint for interrupt-names
a0842ec452cb dt-bindings: cpufreq: cpufreq-qcom-hw: Add QCS8300 compatible
08344f6cf323 dt-bindings: clock: qcom,x1e80100-camcc: Fix the list of required-opps
b58d82c6f35a ASoC: dt-bindings: fsl,sai: Add i.MX94 support
52fcce301d62 regulator: dt-bindings: pca9450: Add nxp,pf9453 compatible string
5a327e9ff15c ASoC: dt-bindings: mediatek,mt8188-mt6359: Add mediatek,accdet
9d8dfb82b770 ASoC: dt-bindings: Add schema for "awinic,aw88166"
b21759520198 dt-bindings: phy: rockchip: Add rk3562 naneng-combophy compatible
3f127f8b13cf dt-bindings: phy: Add Rockchip MIPI C-/D-PHY schema
7fdfaa5e1649 arm64: dts: rockchip: remove ethm0_clk0_25m_out from Sige5 gmac0
e532d69208c3 arm64: dts: marvell: Use preferred node names for "simple-bus"
36438541d5f0 arm64: dts: marvell: Drop unused CP11X_TYPE define
a6ee6a6bd390 arm64: dts: marvell: Move arch timer and pmu nodes to top-level
dc3b5c12e6a4 dt-bindings: rng: rockchip,rk3588-rng: Drop unnecessary status from example
2df156046328 Merge tag 'ti-k3-dt-for-v6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux into soc/dt
f57059f434cd Merge tag 'imx-dt64-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/dt
4378c7352b85 Merge tag 'imx-dt-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/dt
81231b09fca0 Merge tag 'imx-bindings-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/dt
f185c678c9a4 Merge tag 'spacemit-dt-for-6.15-1' of https://github.com/spacemit-com/linux into soc/dt
c18007158dda Merge tag 'davinci-updates-for-v6.15-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into soc/dt
d24528c09c20 arm64: dts: rockchip: Fix PWM pinctrl names
2e5608c86650 arm64: dts: rockchip: fix RK3576 SCMI clock IDs
52dc545f0788 dt-bindings: clock: rk3576: add SCMI clocks
24b2d3f6703c arm64: dts: rockchip: Fix pcie reset gpio on Orange Pi 5 Max
8f7a008a36a0 Merge tag 'samsung-dt64-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into soc/dt
02def44715b4 Merge tag 'asahi-soc-dt-6.15-v3' of https://github.com/AsahiLinux/linux into soc/dt
50a5056a0fbc Merge tag 'v6.15-rockchip-dts64-1' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/dt
abd4cba3fc31 Merge tag 'tegra-for-6.15-arm64-dt-v2' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt
a8cb4de20f8e Merge tag 'tegra-for-6.15-dt-bindings' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt
920fc9d1facb arm64: dts: amd/seattle: Drop undocumented "spi-controller" properties
7303c3977e4a arm64: dts: amd/seattle: Fix bus, mmc, and ethernet node names
bdc46b592528 arm64: dts: amd/seattle: Move and simplify fixed clocks
5767b5ef37dc arm64: dts: amd/seattle: Base Overdrive B1 on top of B0 version
f66a26fc5063 Merge tag 'renesas-dts-for-v6.15-tag2' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
f94bc208615f dt-bindings: mfd: syscon: Add the pbus-csr node for Airoha EN7581 SoC
a6586b520e84 bindings: pinctrl: ingenic: add x1600
c5f11db1dc9c dt-bindings: mfd: syscon: Add rk3528 QoS register compatible
99b871852f02 dt-bindings: mfd: atmel,sama5d2-flexcom: Add microchip,sama7d65-flexcom
cee62549c1cf dt-bindings: mfd: qcom,tcsr: Add compatible for MSM8937
4b2dbbdb1106 dt-bindings: mfd: samsung,s2mps11: Add compatible for s2mpu05-pmic
e53b55f7425b dt-bindings: regulator: Add TI TPS65214 PMIC bindings
b70d9d3353c8 dt-bindings: regulator: Add TI TPS65215 PMIC bindings
f8f2120feff1 dt-bindings: mfd: Convert fsl,mcu-mpc8349emitx binding to YAML
fabf15359158 dt-bindings: mfd: stm32-timers: Add support for stm32mp25
27070527c9da Merge branches 'ib-mfd-input-leds-power-6.15', 'ib-mfd-power-6.15' and 'ib-mfd-regulator-6.15' into ibs-for-mfd-merged
3cfc089d7aee dt-bindings: can: fsl,flexcan: add i.MX94 support
e0c8c7d1cba3 dt-bindings: can: fsl,flexcan: add transceiver capabilities
867ef82b4496 dt-bindings: usb: qcom,dwc3: Synchronize minItems for interrupts and -names
4cfef97e6f55 Merge tag 'iio-for-6.15a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-next
2bbf5d333bbb Merge tag 'mediatek-drm-next-6.15-v2' of https://git.kernel.org/pub/scm/linux/kernel/git/chunkuang.hu/linux into drm-next
1e57f81382d5 arm64: dts: freescale: Add support for the GOcontroll Moduline Display
5eb64fd18835 ASoC: sun4i-codec: add headphone dectection for
7818917a7583 dt-bindings: clocks: atmel,at91rm9200-pmc: add missing compatibles
6144fc934c1d dt-bindings: reset: fix double id on rk3562-cru reset ids
cb698afb24b8 dt-bindings: spi: add compatibles for mt7988
c6d6437dbad2 dt-bindings: remoteproc: Add SM8750 MPSS
16f807a2f799 dt-bindings: power: qcom,kpss-acc-v2: add qcom,msm8916-acc compatible
9f908c3d4e3d ASoC: dt-bindings: sun4i-a10-codec: add hp-det-gpios
1cf4588d69c5 dt-bindings: connector: Add the GOcontroll Moduline module slot bindings
dcf3f572da06 dt-bindings: vendor-prefixes: add GOcontroll
fac0b8b2d03e ASoC: dt-bindings: tas2770: add compatible for TAS5770L
8af38e87bf30 ASoC: dt-bindings: tas27xx: add compatible for SN012776
7aa416c35ed5 arm64: dts: rockchip: Enable HDMI audio output for ArmSoM Sige7
bd4c8a1c08f9 arm64: dts: rockchip: Enable onboard eMMC on Radxa E20C
db7a99c423de arm64: dts: rockchip: Add SDHCI controller for RK3528
29d894b16a31 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
5857b1d7ade2 arm64: dts: rockchip: Remove bluetooth node from rock-3a
8464126790be arm64: dts: rockchip: Move rk356x scmi SHMEM to reserved memory
208e3a0a442e dt-bindings: clock: qcom: Add compatible for QCM6490 boards
b92c36eff4bf dt-bindings: clock: ti: Convert ti-clkctrl.txt to json-schema
0e87b6717e3c dt-bindings: dsp: fsl,dsp: Add resets property
6cc91fdea94d dt-bindings: reset: audiomix: Add reset ids for EARC and DSP
28a2aabbb6c4 dt-bindings: pinctrl: add compatible for Allwinner A523/T527
6b4d5de72979 dt-bindings: power: Add TH1520 SoC power domains
a441545e25fc dt-bindings: firmware: thead,th1520: Add support for firmware node
ecbefc112b34 regulator: dt-bindings: add documentation for s2mpu05-pmic regulators
678f2f84e7f4 dt-bindings: net: Define interrupt constraints for DWMAC vendor bindings
228d9ce5d3bb dt-bindings: net: rockchip-dwmac: Require rockchip,grf and rockchip,php-grf
20bbb3d2c8e7 dt-bindings: firmware: imx: add property reset-controller
5ba7b84e7bf0 dt-bindings: reset: atmel,at91sam9260-reset: add sam9x7
568847bfd352 dt-bindings: display: mediatek: dpi: add power-domains example
32e09f864be1 arm64: dts: st: add stm32mp215f-dk board support
559d24b54b4e dt-bindings: stm32: document stm32mp215f-dk board
da2175c8eedc arm64: dts: st: introduce stm32mp21 SoCs family
050105727605 arm64: dts: st: add stm32mp235f-dk board support
8a79caa82a70 dt-bindings: stm32: document stm32mp235f-dk board
6abc5bf17ba1 arm64: dts: st: introduce stm32mp23 SoCs family
e95c2526d6e9 dt-bindings: stm32: add STM32MP21 and STM32MP23 compatibles for syscon
c8aa9617a955 arm64: dts: st: add stm32mp257f-dk board support
5a615c7759c9 dt-bindings: stm32: document stm32mp257f-dk board
fa94a630d90d dt-bindings: watchdog: renesas,wdt: Document RZ/G3E support
c0aabcef7b8d dt-bindings: mmc: sunxi: add compatible strings for Allwinner A523
2486f6c1b421 dt-bindings: mmc: sunxi: Simplify compatible string listing
8ca3040b05de dt-bindings: mmc: sdhci-of-dwcmhsc: Add compatible string for RK3528
5b36bb4f4707 dt-bindings: mmc: rockchip-dw-mshc: Add compatible string for RK3528
8462dd3e6881 dt-bindings: mmc: renesas,sdhi: Document RZ/G3E support
d274a3df0a12 dt-bindings: mmc: rockchip-dw-mshc: Add support for rk3562
56b744861176 dt-bindings: mmc: Add support for rk3562 eMMC
eb9b6eec2dda arm64: dts: rockchip: Add AP6275P wireless support to ArmSoM Sige7
906b8cbb8d43 arm64: dts: rockchip: Enable HDMI audio outputs for Orange Pi 5 Plus
19e0533172f2 arm64: dts: rockchip: Enable HDMI1 on Orange Pi 5 Plus
0bbaa0ff4c09 arm64: dts: rockchip: Enable HDMI audio outputs for Orange Pi 5 Max
173563eb6666 arm64: dts: rockchip: Enable HDMI0 audio output for Orange Pi 5/5B
9895a2f169dd dt-bindings: clk: sunxi-ng: document two Allwinner A523 CCUs
b8f6cd67f8b3 dt-bindings: trivial-devices: Add Maxim max15301, max15303, and max20751
fc5147dfc750 dt-bindings: fsi: ibm,p9-scom: Add "ibm,fsi2pib" compatible
5f06f892eb53 Backmerge tag 'v6.14-rc6' into drm-next
fb0e8021a68f dt-bindings: iio: adc: Add i.MX94 and i.MX95 support
e15adeb19f02 dt-bindings: iio: adc: add AD7191
33496024fc8e dt-bindings: mmc: atmel,hsmci: Convert to json schema
7ab9faf87206 dt-bindings: mmc: mmc-slot: Make compatible property optional
ff4a69b28cf8 dt-bindings: mmc: fsl-imx-esdhc: Add i.MX94 support
b6c174fc7de2 dt-bindings: mmc: Change to additionalProperties to fix fail detect Unevaluated property
502377fe32de dt-bindings: mmc: samsung,exynos-dw-mshc: add exynos7870 support
d6ee3c852b25 dt-bindings: PCI: xilinx-cpm: Add compatible string for CPM5NC Versal Net host
a19185cc15d1 Merge tag 'at24-updates-for-v6.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into i2c/for-mergewindow
0677248b0e32 dt-bindings: arm-smmu: Document QCS8300 GPU SMMU
efd6b0348bfa dt-bindings: spi: add SG2044 SPI NOR controller driver
d0f43207a01a dt-bindings: phy: qcom,sc8280xp-qmp-pcie-phy: Document the QCS8300 QMP PCIe PHY Gen4 x2
8d4b83e94b40 dt-bindings: phy: qcom,sc8280xp-qmp-ufs-phy: document the SM8750 QMP UFS PHY
eeae88998b40 dt-bindings: phy: qcom,uniphy-pcie: Document PCIe uniphy
26a91c680522 ARM: dts: stm32: Add Plymovent AQM devicetree
4c21b9c842e3 ARM: dts: stm32: Add pinmux groups for Plymovent AQM board
904f0d522b88 dt-bindings: arm: stm32: Add Plymovent AQM board
a3a3221056c9 dt-bindings: sound: convert ICS-43432 binding to YAML
2f91de2a490b ARM: dts: apalis/colibri-imx6: Add support for v1.2
9eb0618252aa ARM: dts: apalis/colibri-imx6: Enable STMPE811 TS
f758e0d13235 dt-bindings: arm: fsl: Add VAR-SOM-MX6UL SoM and Concerto board
f76216ee5bc2 ARM: dts: imx6ul: Add Variscite Concerto board support
dd6e0d48db76 ARM: dts: imx6ul: Add Variscite VAR-SOM-MX6UL SoM support
b3d9184831ad arm64: dts: imx8qm-apalis: Remove compatible from SoM dtsi
517caee96f7e ARM: dts: vf610-colibri: Remove compatible from SoM dtsi
5656930f43b4 ARM: dts: imx6qdl-apalis/colibri: Remove compatible from SoM dtsi
fad232a946b4 dt-bindings: arm: fsl: drop usage of Toradex SOMs compatible alone
ea11d8d98354 arm64: dts: imx8mp: change AUDIO_AXI_CLK_ROOT freq. to 800MHz
0b17f7c82b59 arm64: dts: imx8mp: add AUDIO_AXI_CLK_ROOT to AUDIOMIX block
2bc9da478485 arm64: dts: imx93: add ddr edac support
ab9bf8d19072 arm64: dts: imx95: add ref clock for pcie nodes
1ad5ffe68e35 arm64: dts: mba8xx: Remove invalid property disable-gpio
ef030623665a ARM: dts: imx6ul-tqma6ul1: Change include order to disable fec2 node
1c284ff7a69f arm64: dts: imx8qm-ss-hsio: Wire up DMA IRQ for PCIe
4456f7d29f3a arm64: dts: im8mq-librem5: move dwc3 usb port under ports
9a66f214f03d arm64: dts: mba8mx: change sound card model name
4749d122ddde arm64: dts: imx8mp-tqma8mpql-mba8mpxl: change sound card model name
5269104e27e3 arm64: dts: s32g: add FlexCAN[0..3] support for s32g2 and s32g3
71b653961ab8 dt-bindings: arm: fsl: add i.MX95 15x15 EVK board
1ebef3515785 arm64: dts: imx95: Add imx95-15x15-evk support
9726256fedee arm64: dts: imx95: Add i3c1 and i3c2
94ef2b4371a4 arm64: dts: imx95: Add #io-channel-cells = <1> for adc node
d73e4f93cd40 ARM: dts: imx53-mba53: Fix the PCA9554 compatible
acd5a974e760 ARM: dts: imx31: Use nand-controller as node name
81ad2fe2f7b5 ARM: dts: vfxxx: Fix the order of the DMA entries
5447ae84fa8f ARM: dts: tqma7: Add partitions subnode to spi-nor
1ccfa18431b4 ARM: dts: imx7-tqma7: Add vcc-supply for spi-nor
1743d93ea655 ARM: dts: tqma6ul: Add partitions subnode to spi-nor
acde6cbf9cdf ARM: dts: imx6ul-tqma6ul: Add vcc-supply for spi-nor
c3ce52f0a98e ARM: dts: imx6ul-tqma6ul: Order DT properties
83b725debc91 ARM: dts: imx6qdl-tqma6: Add partitions subnode to spi-nor
4169f66d2bb7 ARM: dts: imx6qdl-tqma6: use sw4_reg as 3.3V supply
851b1c7d93cb ARM: dts: imx6qdl-tqma6: limit PMIC SW4 to 3.3V
2cb7d799b230 ARM: dts: imx6qdl-tqma6: Order DT properties
d4c064aa4ec4 arm64: dts: imx8mp-skov: support new 7" panel board
c8cb767887b4 arm64: dts: imx8mp-skov: add revC BD500 board
ea4b50b721d7 arm64: dts: imx8mp-skov: describe I2C bus recovery for all controllers
93fe81be94fe arm64: dts: imx8mp-skov: move I2C2 pin control group into DTSI
4e3e1bd5602f arm64: dts: imx8mp-skov: add basic board as fallback
26e62120b67b dt-bindings: arm: fsl: add more compatibles for Skov i.MX8MP variants
d9eebb23bec4 arm64: dts: freescale: imx8mp-skov: operate SoC in nominal mode
1dd517527ec2 arm64: dts: freescale: imx8mp-skov: configure LDB clock automatically
9fe870aa5fbb arm64: dts: imx8mp: add fsl,nominal-mode property into nominal.dtsi
36d591413641 arm64: dts: imx8mp: Add optional nominal drive mode DTSI
04b0ce30ed9a Merge patch series "scsi: ufs: renesas: Add support for R-Car S4-8 ES1.2"
c0c684cc130f scsi: ufs: dt-bindings: renesas,ufs: Add calibration data
fc09bffd40a1 arm64: dts: imx8mp: configure GPU and NPU clocks to overdrive rate
bd3329807adb arm64: dts: freescale: ten64: add usb hub definition
4057bd794cb2 Merge tag 'drm-msm-next-2025-03-09' of https://gitlab.freedesktop.org/drm/msm into drm-next
31ae3a9262da dt-bindings: dma: snps,dw-axi-dmac: Allow devices to be marked as noncoherent
1b13b0914156 dt-bindings: dma: Convert fsl,elo*-dma to YAML
c3ed4efc2e50 dt-bindings: dma: fsl-mxs-dma: Add compatible string for i.MX8 chips
aa353c2ac5c5 dt-bindings: input: goodix,gt9916: Document gt9897 compatible
6eb8cce7644b dt-bindings: pwm: imx: Add i.MX93, i.MX94 and i.MX95 support
cbd6df2de511 ARM: dts: stm32: Add support for STM32MP13xx DHCOR SoM and DHSBC rev.200 board
3167db834dfa ARM: dts: stm32: use IRQ_TYPE_EDGE_FALLING on stm32mp157c-dk2
b83d9874fa79 dt-bindings: gpio: vf610: Add i.MX94 support
58ce3a6f5491 Merge v6.14-rc6 into usb-next
ee4310889b80 dt-bindings: phy: document Allwinner A523 USB-2.0 PHY
e2e13ecd8aa4 dt-bindings: soc: samsung: exynos-usi: Drop unnecessary status from example
13c7fa153448 dt-bindings: watchdog: fsl-imx7ulp-wdt: Add i.MX94 support
6fc9ef1dce8b ASoC: dmic: add regulator support
f33253da3ed0 dt-bindings: pwm: rockchip: Add rockchip,rk3528-pwm
df96b42ccaa5 arm64: dts: rockchip: Add SPI NOR device on the ROCK 4D
8af8429d4741 arm64: dts: rockchip: Add SFC nodes for rk3576
460ef5b623e5 arm64: dts: rockchip: Add maskrom button to Radxa E20C
8ba64ba5cb30 arm64: dts: rockchip: Add SARADC node for RK3528
6793b56b79df arm64: dts: rockchip: Add user button to Radxa E20C
a3556ede6b48 arm64: dts: rockchip: Add leds node to Radxa E20C
4dc91efae86b arm64: dts: rockchip: Add HDMI support for rock-4d
6e03c7e28e2d arm64: dts: rockchip: enable SCMI clk for RK3528 SoC
2bdc1b582fc5 arm64: dts: rockchip: Enable HDMI receiver on rock-5b
be8c63cd54f8 arm64: dts: rockchip: Add device tree support for HDMI RX Controller
9ee90dfd6957 arm64: dts: rockchip: Add rk3528 QoS register node
cc3c4cf475e2 dt-bindings: mfd: syscon: Add rk3528 QoS register compatible
de0d9c50f68f ASoC: dt-bindings: fsl,imx-asrc: Document audio graph port
2e3ffd78169f ASoC: dt-bindings: add regulator support to dmic codec
0946c7535fed dt-bindings: PCI: fsl,layerscape-pcie-ep: Drop unnecessary status from example
0d08b7785cbf dt-bindings: PCI: fsl,layerscape-pcie-ep: Drop deprecated windows
499ff8f6f00e dt-bindings: crypto: qcom,prng: document QCS615
137ebe3e9e23 dt-bindings: crypto: inside-secure,safexcel: Allow dma-coherent
19a0ed3478a5 dt-bindings: net: Add support for Sophgo SG2044 dwmac
01ec431b0809 dt-bindings: display/msm: dsi-controller-main: Add missing minItems
899bbe0128ad dt-bindings: display/msm: dsi-controller-main: Combine if:then: entries
b6b83575709d dt-bindings: memory-controllers: qcom,ebi2: Enforce child props
7a5a115214b1 dt-bindings: memory-controllers: samsung,exynos4210-srom: Enforce child props
5cbcded3d915 arm64: tegra: p2180: Add TMP451 temperature sensor node
bb4e0081de49 arm64: tegra: p2597: Enable TCA9539 as IRQ controllers
64bca56d40df arm64: tegra: Define pinmuxing for gpio pads on Tegra210
a2afd5dbc694 arm64: tegra: p2597: Fix gpio for vdd-1v8-dis regulator
3074f948c0f0 arm64: tegra: Resize aperture for the IGX PCIe C5 slot
0556e73ad468 arm64: tegra: Remove the Orin NX/Nano suspend key
5075ae527c32 dt-bindings: timer: exynos4210-mct: add samsung,exynos2200-mct-peris compatible
b2d611510011 dt-bindings: timer: exynos4210-mct: Add samsung,exynos990-mct compatible
e25abb336b06 dt-bindings: timer: Correct indentation and style in DTS example
27659631b1ab ARM: dts: marvell: armada: Align GPIO hog name with bindings
45d76d30bd18 ARM: dts: marvell: kirkwood-openrd: Align GPIO hog name with bindings
ed88cf59518a arm64: dts: marvell: armada-8040: Align GPIO hog name with bindings
fd8985afa234 dt-bindings: Document Tegra114 HDA support
514aa1e9d711 dt-bindings: display: tegra: Document Tegra124 MIPI
6f895e2fc34b Merge branch 'for-6.15/io_uring-rx-zc' into for-6.15/io_uring-reg-vec
783a9ff2b877 arm64: dts: tesla: Change labels to lower-case
fb95fa637210 arm64: dts: exynos: gs101: Change labels to lower-case
8bb1ecf374d2 arm64: dts: ti: k3-am62a-phycore-som: Reorder properties per DTS coding style
b7183e25919b arm64: dts: ti: k3-am642-phyboard-electra: Reorder properties per DTS coding style
d3e54c73fad8 arm64: dts: ti: k3-am642-phyboard-electra: Add boot phase tags
c198a9892aee arm64: dts: ti: k3-am62a-phycore-som: Add boot phase tags
7adcaf738ea2 arm64: dts: ti: k3-am62x-phyboard-lyra: Add boot phase tags
08a8be409da1 Merge tag 'ath-next-20250305' of git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath
b6eb736bdac9 dt-bindings: irq: sun7i-nmi: Document the Allwinner A523 NMI controller
29c23eb9e1e4 dt-bindings: net: Add FSD EQoS device tree bindings
7fcf7786e3c1 dt-bindings: ieee802154: ca8210: Update polarity of the reset pin
63f785ba85d6 dt-bindings: i3c: silvaco: Add npcm845 compatible string
4e7d4a0a5a98 dt-bindings: i3c: dw: Add power-domains
60779b9e5efd arm64: dts: apple: t8015: Add backlight nodes
d1c2cf3d6db3 arm64: dts: apple: t8010: Add backlight nodes
c493ad2b695a arm64: dts: apple: s800-0-3: Add backlight nodes
2a527cb076cb arm64: dts: apple: t7000: Add backlight nodes
8c09890d8a3a arm64: dts: apple: s5l8960x: Add backlight nodes
644d720366d7 spi: dt-bindings: fsl-lpspi: Add i.MX94 support
43baf3d00dd4 ARM: tegra: tf101: Add al3000a illuminance sensor node
01ff58401e94 dt-bindings: display: mitsubishi,aa104xd12: Adjust allowed and required properties
76f79fd8d2e1 dt-bindings: display: mitsubishi,aa104xd12: Allow jeida-18 for data-mapping
753638f98d53 ARM: tegra: Add DSI-A and DSI-B nodes on Tegra124
0dc63e559158 ARM: tegra: Add HDA node on Tegra114
c21c9d411a7b ARM: tegra: Add ARM PMU node on Tegra114
c169b6a13648 ARM: tegra: Switch DSI-B clock parent to PLLD on Tegra114
ce08790716a2 dt-bindings: media: mediatek,vcodec: Revise description
1d7d1f1bb863 dt-bindings: media: mediatek,jpeg: Relax IOMMU max item count
84ee1a870bac Merge tag 'mtk-dts64-for-v6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux into soc/dt
aded2fb69436 arm64: dts: nvidia: Remove unused and undocumented "regulator-ramp-delay-scale" property
ee85d6d69363 Merge tag 'juno-updates-6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux into soc/dt
9591e80db9de Merge tag 'asahi-soc-dt-6.15-v2' of https://github.com/AsahiLinux/linux into soc/dt
c078f53218f7 Merge tag 'renesas-dts-for-v6.15-tag1' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
ba3eae2fe133 Merge tag 'renesas-dt-bindings-for-v6.15-tag1' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
3077a635de45 Merge tag 'ixp4xx-dts-soc-for-v6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator into soc/dt
5dc02a7bec60 Merge tag 'asahi-soc-dt-6.15' of https://github.com/AsahiLinux/linux into soc/dt
131231dc887a arm64: dts: renesas: r9a09g057h44-rzv2h-evk: Enable Mali-G31
f6f80ad2a1f4 arm64: dts: renesas: r9a09g057: Add Mali-G31 GPU node
bbda080c8952 arm64: dts: rockchip: add MNT Reform 2 laptop
eb0d04e0938d dt-bindings: arm: rockchip: Add MNT Reform 2 (RCORE)
ef01ba18d719 dt-bindings: soc: rockchip: Add RK3528 VPU GRF syscon
9d39d8aa54eb dt-bindings: soc: rockchip: Add RK3528 VO GRF syscon
2f989dc849ab dt-bindings: PCI: fsl,imx6q-pcie: Add optional DMA interrupt
f139ea2f5a06 dt-bindings: PCI: Convert fsl,mpc83xx-pcie to YAML
1dfe7500437d dt-bindings: PCI: qcom: Document the IPQ5332 PCIe controller
f83683dd6f9e arm64: dts: mediatek: mt8395-radxa-nio-12l: Add Radxa 8 HD panel
9595aadd9a31 arm64: dts: mediatek: mt8395-nio-12l: Prepare MIPI DSI port
9f598f6af2a3 arm64: dts: mediatek: mt8390-genio-common: Add delay codec for DMIC
b152da61f6cd arm64: dts: mediatek: mt8390-genio-common: Add routes for DMIC
7f5ef01f6c71 arm64: dts: mediatek: mt8395-nio-12l: Preconfigure DSI0 pipeline
7cefb6741548 arm64: mediatek: mt8195-cherry: Add graph for eDP and DP displays
bd0418035afa arm64: dts: mediatek: mt8195: Add base display controller graph
67a479e22dd9 arm64: dts: airoha: en7581: Fix clock-controller address
9f3a44607c09 arm64: dts: airoha: en7581: Add more nodes to EN7581 SoC evaluation board
6d3ac809c14a arm64: dts: mediatek: mt8390-genio-common: Configure touch vreg pins
f607df354b84 arm64: dts: mediatek: mt8188-geralt: Add graph for DSI and DP displays
b62844c6033e arm64: dts: rockchip: Enable hdmi out display for rk3576-evb-v10
70636ab4c427 dt-bindings: PCI: altera: Add binding for Agilex
5f2ac732a000 dt-bindings: qcom: geni-se: Add 'firmware-name' property for firmware loading
eb0afea35cd3 ASoC: Merge up fixes
a7fdc3022cc4 dt-bindings: soc: samsung: exynos-pmu: add exynos7870-pmu compatible
09611d37a4a2 dt-bindings: media: Document bindings for HDMI RX Controller
5733784ecab2 dt-bindings: gpio: loongson: Add new loongson gpio chip compatible
bde0820c0330 dt-bindings: pinctrl: Add bindings for BCM21664 pin controller
99ef71a02c72 dt-bindings: input: matrix_keypad - add wakeup-source property
6cc85963b28f arm64: dts: ti: k3-j722s-evm: Add camera peripherals
f57767d39255 arm64: dts: ti: k3-j722s-main: Add CSI2RX nodes
5f079de69dbc arm64: dts: ti: k3-j722s-main: Add BCDMA CSI overrides
fc74dd76227a arm64: dts: ti: k3-j722s: fix pinctrl settings
5916cffba231 arm64: dts: ti: k3-am62p: fix pinctrl settings
d442b5177760 arm64: dts: ti: am64-phyboard-electra: Add DT overlay for X27 connector
598a53f305e4 dt-bindings: remoteproc: qcom,wcnss-pil: Add support for single power-domain platforms
cda103526016 dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8926
893c449685ce dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8226
e9fa3e49686b dt-bindings: remoteproc: qcom,msm8916-mss-pil: Support platforms with one power domain
c9ba86664ced dt-bindings: remoteproc: Add SM8750 CDSP
0727f5f07392 dt-bindings: display/msm: qcom, sa8775p-mdss: Add missing eDP phy
0e759e398167 dt-bindings: remoteproc: qcom,sm6115-pas: Use recommended MBN firmware format in DTS example
ad59df2a8e47 dt-bindings: net: Convert fsl,gianfar to YAML
ecac8517df71 dt-bindings: net: fsl,gianfar-mdio: Update information about TBI
9f27542c356c dt-bindings: net: Convert fsl,gianfar-{mdio,tbi} to YAML
f3d1127d6da2 arm64: dts: rockchip: Enable hdmi display on sige5
4353815d5413 arm64: dts: rockchip: Add hdmi for rk3576
e898135e14ac arm64: dts: rockchip: Add vop for rk3576
c4a8c85028f9 ARM: dts: microchip: sama7g5: add ADC hw trigger edge type
e415d0ace351 ASoC: fsl_audmix: support audio graph card for audmix
81dd10b4d87c dt-bindings: arm: Add Coresight TMC Control Unit hardware
5ffae977c446 Merge tag 'wireless-next-2025-03-04-v2' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
8cdbfaccfe40 dt-bindings: iio: adc: ad7380: add adaq4381-4 compatible parts
c35357650277 dt-bindings: iio: adc: Add rockchip,rk3562-saradc string
ffdcbd963d7a dt-bindings: iio: adc: Add rockchip,rk3528-saradc variant
9ca8f9827434 arm64: dts: rockchip: Add ES8388 audio codec fallback on RK3588 boards
f8fb45ddefb3 arm64: dts: rockchip: Add ES8388 audio codec fallback on RK3399 ROC PC PLUS
45ccbb3708d1 dt-bindings: iio: light: al3010: add al3000a support
2dcb97b015ba Add STM32MP25 SPI NOR support
663e168d3026 ASoC: dt-bindings: everest,es8328: Require reg property
5973f33d36e4 ASoC: dt-bindings: everest,es8328: Mark ES8388 compatible with ES8328
d5fdb2909430 dt-bindings: net: airoha: Add airoha,npu phandle property
4b02ac198dfd dt-bindings: net: airoha: Add the NPU node for EN7581 SoC
9bcf6ccdd87c arm64: dts: rockchip: Add uart0 pinctrl to Radxa E20C
89a24fa2e923 arm64: dts: rockchip: Add pinctrl and gpio nodes for RK3528
340a7d991681 dt-bindings: soc: rockchip: Add RK3528 ioc grf syscon
2484bd1527c8 dt-bindings: mtd: physmap: Ensure all properties are defined
9a114f2cbbc5 dt-bindings: mtd: mxc-nand: Document fsl,imx31-nand
33bcbf56e498 dt-bindings: gpio: mvebu: Add missing 'gpio-ranges' property and hog nodes
9a17c1dc8a52 dt-bindings: pinctrl: Add pinctrl support for RK3528
a8fac5afd00e dt-bindings: clock: qcom: sm8450-camcc: Remove qcom,x1e80100-camcc leftover
3d038aa84fac dt-bindings: display: vop2: Add rk3576 support
539c3db87e49 dt-bindings: display: vop2: Add missing rockchip,grf property for rk3566/8
fc2f169c14d8 dt-bindings: display: vop2: describe constraint SoC by SoC
a9175c1faaf6 arm64: dts: apple: Add touchbar screen nodes
0a30c2fb605b dt-bindings: PCI: mediatek-gen3: Add mediatek,pbus-csr phandle array property
6c0991dfe309 ARM: dts: microchip: sama7d65: Add watchdog for sama7d65
3a5c0b5439e4 arm64: dts: corstone1000: Add definitions for secondary CPU cores
760344eaf4df dt-bindings: clock: imx8m: document nominal/overdrive properties
3ebf9fab8556 dt-bindings: display: Add Apple pre-DCP display controller
45f020c2ff12 dt-bindings: clock: imx8mp: add axi clock
25a9aae37c46 ASoC: dt-bindings: fsl,audmix: make 'dais' property to be optional
39ab44f1f451 ASoC: dt-bindings: fsl,audmix: Document audio graph port
751e72c4a42f ASoC: dt-bindings: fsl,sai: Document audio graph port
375185829d56 spi: dt-bindings: Introduce qcom,spi-qpic-snand
ca5abc134e5c dt-bindings: spi: Add STM32 OSPI controller
18e6b1036205 dt-bindings: PCI: amd-mdb: Add AMD Versal2 MDB PCIe Root Port Bridge
f8432e8085b8 dt-bindings: PCI: dwc: Add AMD Versal2 MDB SLCR support
f3240bd9ff15 dt-bindings: usb: samsung,exynos-dwc3: add exynos7870 support
578e6366fe17 dt-bindings: usb: dwc3: Add support for rk3562
9c7380c08c12 dt-bindings: usb: generic-xhci: Allow dma-coherent
f5355ed2d30b dt-bindings: usb: richtek,rt1711h: Add missing vbus power supply
2fecbb897235 dt-bindings: pinctrl: samsung: add exynos7870-wakeup-eint compatible
6acd675fdb2b dt-bindings: pinctrl: samsung: add exynos7870-pinctrl compatible
64247b825e83 arm64: dts: qcom: gaokun3: Add Embedded Controller node
0de83bdbd702 dt-bindings: platform: Add Huawei Matebook E Go EC
8c7e026bceb2 arm64: dts: ti: k3-j784s4-j742s2-main-common: Fix serdes_ln_ctrl reg-masks
b0f3437e4eed arm64: dts: ti: k3-am62p: Enable AUDIO_REFCLKx
7abf45296c55 dt-bindings: hwmon: gpio-fan: Add optional regulator support
ad715d63d5b9 dt-bindings: hwmon: Add UCD90320 gpio description
94282ccb3f77 dt-bindings: hwmon: ntc-thermistor: fix typo regarding the deprecation of the ntc, compatibles
37c47e53b269 dt-bindings: display: mediatek: dsc: Add MT8188 compatible
a880ab46aaf3 ARM: dts: microchip: sama7d65: Enable shutdown controller
5bf0dfe3a93e ARM: dts: microchip: sama7d65: Add SFRBU support to sama7d65
ceb3ca267777 ARM: dts: microchip: sama7d65: Add RTC support for sama7d65
33d484179e01 ARM: dts: microchip: sama7d65: Add Shutdown controller support
3a833187b48a ARM: dts: microchip: sama7d65: Add Reset Controller to sama7d65 SoC
cb7d22318d14 arm64: dts: ti: k3-am62-phycore-som: Reserve RTOS IPC memory
de40a5c334d5 arm64: dts: ti: k3-am64-phycore-som: Reserve RTOS IPC memory
c1de68dfb465 arm64: dts: ti: k3-am62p5-sk: Add serial alias
fc3a3408782e arm64: dts: ti: k3-am62a7-sk: Add serial alias
89fb433abb4a arm64: dts: ti: k3-am62x-sk-common: Add serial aliases
b40599be6e89 arm64: dts: ti: k3-am62p5-sk: Support SoC wakeup using USB1 wakeup
4e21f0928a3c arm64: dts: ti: k3-am625-beagleplay: Reserve 128MiB of global CMA
0e6efc73fbc4 arm64: dts: ti: k3-j721e-sk: Add boot phase tag to SERDES3
e62cc3a65c52 arm64: dts: ti: k3-j721e-common-proc-board: Add boot phase tag to SERDES3
df13b922a34e arm64: dts: ti: k3-am62p-j722s-common-wakeup: Configure ti-sysc for wkup_uart0
d5e905102b12 arm64: dts: ti: k3-am62a7-sk: Add alias for RTC
f0a08fa6651e arm64: dts: ti: k3-j721s2-som-p0: Add flash partition details
49435c1a2a18 arm64: dts: ti: k3-am62-verdin-dahlia: add Microphone Jack to sound card
dbb5bd13ad09 arm64: dts: ti: k3-j784s4-j742s2-main-common: Correct the GICD size
e42f6f652b25 arm64: dts: ti: k3-am62p5-sk: Add boot phase tag for USB0
d6d559bbf2a6 arm64: dts: ti: k3-am62a7-sk: Add boot phase tag for USB0
26e1b575e84d dt-bindings: display: mediatek: dpi: Add MT8195 and MT8188 compat
c32424d952a8 dt-bindings: crypto: Convert fsl,sec-2.0 to YAML
83100c586db1 dt-bindings: clock: add clock definitions and documentation for exynos7870 CMU
839f40a5722d dt-bindings: clock: add Exynos2200 SoC
22fe2b154172 dt-bindings: iommu: qcom,iommu: Add MSM8937 IOMMU to SMMUv1 compatibles
34189497288b dt-bindings: pwm: rockchip: Add rockchip,rk3562-pwm
9afffc8f0f22 dt-bindings: interrupt-controller: Convert nxp,lpc3220-mic.txt to yaml format
7fa643245f20 dt-bindings: gpu: Add rockchip,rk3562-mali compatible
3abda087dbf6 Merge branch 'v6.15-shared/clkids' into v6.15-clk/next
8cd451e705ff dt-bindings: clock: Add RK3562 cru
1f94b7afa565 arm64: dts: rockchip: add usb typec host support to rk3588-jaguar
05453dc67f58 dt-bindings: wireless: ath12k: Strip ath12k prefix from calibration property
da3621d60f14 dt-bindings: wireless: ath11k: Strip ath11k prefix from calibration property
6fdc1d052416 dt-bindings: wireless: ath10k: Strip ath10k prefix from calibration properties
9861592542dd dt-bindings: display/msm/gmu: Add Adreno 623 GMU
8e07cd8d79b5 arm64: dts: rockchip: Add GPU power domain regulator dependency for RK3588
4c6cdea070ff mdomain: Merge branch dt into next
af3fb092d876 dt-bindings: power: rockchip: add regulator support
1de33272f6b5 pmdomain: Merge tag 'v6.14-rc4' from Linus into next
922c569881d6 ARM: dts: microchip: fix faulty ohci/ehci node names
2a4f0bc75929 ARM: dts: microchip: usb_a9263: fix wrong vendor
22c00bf9a9ec dt-bindings: ARM: at91: add Calao USB boards
00a259802c74 dt-bindings: ARM: at91: make separate entry for Olimex board
f7ecad4dfdba arm64: dts: amlogic: g12: switch to the new PWM controller binding
e594907dbba0 arm64: dts: amlogic: axg: switch to the new PWM controller binding
0db68c194ba8 arm64: dts: amlogic: gx: switch to the new PWM controller binding
07569029f06a ARM: dts: amlogic: meson8b: switch to the new PWM controller binding
45a895b33ca6 ARM: dts: amlogic: meson8: switch to the new PWM controller binding
ecad1190684f dt-bindings: input: matrix_keypad - add missing property
7a5e2e594dcc Merge branch 'ib-amlogic-a4' into devel
84ad7c66e08d dt-bindings: pinctrl: Add support for Amlogic A4 SoC
81d115cd787a Merge branch 'ib-sophgo' into devel
2fb57a80ac82 dt-bindings: pinctrl: Add pinctrl for Sophgo SG2042 series SoC
d25e98a2e1d9 dt-bindings: clock: mediatek: Add SMI LARBs reset for MT8188
9d4fce6bf871 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
b0f9f15fa3eb arm64: dts: rockchip: Enable HDMI1 audio output for Orange Pi 5 Ultra
cb7a017df5cc arm64: dts: rockchip: Enable HDMI1 on Orange Pi 5 Ultra
7a10dcdcf5dd arm64: dts: rockchip: Add Orange Pi 5 Ultra board
bb2d35f7447a dt-bindings: arm: rockchip: Add Xunlong Orange Pi 5 Ultra
c61a839ade98 arm64: dts: rockchip: Adapt to differences between Orange Pi 5 Max and Ultra
f46eeb290a49 arm64: dts: rockchip: add hdmi1 support to ROCK 5 ITX
8abf4e075936 arm64: dts: rockchip: Enable HDMI audio outputs for Rock 5B
a779ebd82fb1 arm64: dts: rockchip: Add HDMI audio outputs for rk3588
b0c3cbe5b68d arm64: dts: rockchip: Enable HDMI1 on rk3588-evb1
40f977e4d24d arm64: dts: rockchip: Add HDMI1 PHY PLL clock source to VOP2 on RK3588
2f30db59cf45 arm64: dts: rockchip: Enable HDMI1 PHY clk provider on RK3588
027b0ef80afb spi: dt-bindings: Add rk3562 support
2533797ddce2 arm64: dts: morello: Add support for fvp dts
9f5663971e1f arm64: dts: morello: Add support for soc dts
3ff25bf13939 arm64: dts: morello: Add support for common functionalities
64de0a722178 dt-bindings: arm-pmu: Add support for ARM Rainier PMU
503c66e651f9 dt-bindings: arm: Add Rainier compatibility
f67be59b2a9a dt-bindings: arm: Add Morello fvp compatibility
9cb3ba5bb59e dt-bindings: arm: Add Morello compatibility
910e9d8438ef mips: dts: ralink: mt7628a: update system controller node and its consumers
0e7913ce1f04 dt-bindings: display: panel: Add Visionox RM692E5
33660ef35f42 dt-bindings: display: panel: Add Raydium RM67200
b9abbea75728 ARM: dts: stm32: add usr3 LED node to stm32f769-disco
972663879bc7 ARM: dts: stm32: rename LEDs nodes for stm32f769-disco
f5f056e5d15d ARM: dts: stm32: add push button to stm32f746 Discovery board
9209e9fa6ca9 ARM: dts: stm32: add led to stm32f746 Discovery board
c572b069bf16 dt-bindings: dma: fsl,edma: Add i.MX94 support
421f8d787226 dt-bindings: dma: atmel: add microchip,sama7d65-dma
3630c655aafd dt-bindings: clock: mediatek,mt8188: Add VDO1_DPI1_HDMI clock
8f22583cbe0b arm64: dts: rockchip: Enable USB3 OTG on rk3588s Cool Pi 4B
175b6ab4addb docs: dt: submitting-patches: Document sending DTS patches
12f69f638472 arm64: dts: rockchip: Add UART clocks for RK3528 SoC
60741472b42e arm64: dts: rockchip: Add clock generators for RK3528 SoC
9d809a089686 Merge branch 'v6.15-shared/clkids' into v6.15-armsoc/dts64
4b92d7bf7d17 Merge branch 'v6.15-shared/clkids' into v6.15-clk/next
8768d063e732 dt-bindings: clock: Document clock and reset unit of RK3528
eb4fa305444d powerpc/microwatt: Add SMP support
eb2feccfe7cb powerpc/microwatt: Device-tree updates
b01ec0c00687 arm64: dts: apple: Add touchbar digitizer nodes
99a9210485d1 ARM: dts: stm32: Add Priva E-Measuringbox devicetree
db39291d4cd4 ARM: dts: stm32: Add thermal support for STM32MP131
736b25b842a6 dt-bindings: arm: stm32: Add Priva E-Measuringbox board
ac84513b3de1 dt-bindings: vendor-prefixes: Add prefix for Priva
153d1dded8e2 ASoC: dt-bindings: xlnx,spdif: Convert to json-schema
1dfc9272871a ASoC: dt-bindings: xlnx,audio-formatter: Convert to json-schema
c05b804fd27e ASoC: dt-bindings: xlnx,i2s: Convert to json-schema
e6b5549e2ea1 dt-bindings: coresight: qcom,coresight-tpdm: Fix too many 'reg'
81c7d959642a dt-bindings: coresight: qcom,coresight-tpda: Fix too many 'reg'
d788495c297e dt-bindings: interrupt-controller: renesas,rzv2h-icu: Document RZ/G3E SoC
ef078fa51469 dt-bindings: gpio: nxp,pcf8575: add reset GPIO
e60b526a254b dt-bindings: display: qcom,sm8650-mdss: explicitly document mdp0-mem and cpu-cfg interconnect paths
5f6c7f3a882b dt-bindings: display: qcom,sm8550-mdss: explicitly document mdp0-mem and cpu-cfg interconnect paths
564ffb04cbff dt-bindings: display/msm/dsi-phy: Add header with exposed clock IDs
dfe70ec7cf52 riscv: sophgo: dts: Add msi controller for SG2042
05d993f3a6ec dt-bindings: interrupt-controller: Add Sophgo SG2042 MSI
a3b737ca15b2 Merge tag 'v6.14-rc4' into next
f3b5bc2ab93f dt-bindings: display/lvds-codec: add ti,sn65lvds822
b20b0aace0f0 dt-bindings: input: matrix_keypad: add settle time after enabling all columns
c6644ddbabe0 dt-bindings: input: matrix_keypad: convert to YAML
0204ceb1dac8 Enable DMIC for Genio 700/510 EVK
aaa0adb4e4ba dt-bindings: input: Correct indentation and style in DTS example
1bd35f025a98 ASoC: dt-bindings: fsl: Reference common DAI
9d01b52dd742 ASoC: dt-bindings: mediatek,mt8188-mt6359: Add DMIC backend to dai-link
4b7def7c217f Fix RK3588 power domain problems
02d8831bddbd ASoC: dt-bindings: fsl,imx-asrc: Reference common DAI properties
2756dbc5dccb ASoC: dt-bindings: fsl,easrc: Reference common DAI properties
be1e7ad12db3 Merge drm/drm-next into drm-misc-next
9876c6970616 dt-bindings: display: simple: Add BOE AV123Z7M-N17 panel
740d6f024cb4 dt-bindings: display: simple: add BOE AV101HDT-A10 panel
695f9094dd3e arm64: dts: mediatek: mt8188: Add base display controller graph
d953922a6352 arm64: dts: mediatek: mt8390-genio-700: Add USB, TypeC Controller, MUX
4a972b5813a9 arm64: dts: mediatek: mt8188: Add MTU3 nodes and correctly describe USB
c926d7135987 dt-bindings: usb: mediatek,mtk-xhci: Add port for SuperSpeed EP
3479b8607126 arm64: dts: mediatek: mt8395-genio-1200-evk: add support for TCPC port
1ea007fec939 dt-bindings: usb: mtu3: Add ports property
81bb891f02a1 arm64: dts: mediatek: mt8390-genio-common: Fix duplicated regulator name
c2ee67f8f91c arm64: dts: mediatek: mt8183: Switch to Elan touchscreen driver
1480b2b9c163 Merge tag 'v6.14-rc4' into drm-next
19566af01522 arm64: dts: imx8mm-phycore-som: Add overlay to disable SPI NOR flash
4d957d8455fd arm64: dts: imx8mm-phycore-som: Add no-eth phy overlay
e38b34b397ca arm64: dts: imx8mm-phycore-som: Add overlay for rproc
1d49d21dd81e arm64: dts: imx8mm-phyboard-polis: Add overlay for PEB-EVAL-01
3e8bdd2e0853 arm64: dts: imx8mm-phyboard-polis: Add support for PEB-AV-10
ea91b13eb856 arm64: dts: imx8mm-phyboard-polis: Assign missing regulator for bluetooth
884d4632d049 arm64: dts: imx8mm: move bulk of rtc properties to carrierboards
3bfc2236c593 arm64: dts: imx8mm-phygate-tauri-l: Set RTC as wakeup-source
1ca2b9c5de6b arm64: dts: imx8mm-phyboard-polis: Set RTC as wakeup-source
2a508a6ff135 arm64: dts: imx8mm-phyboard-polis: add RTC description
b9ef6209b80f arm64: dts: imx8mm-phycore-som: add descriptions to nodes
fa73714ac0c3 arm64: dts: imx8mm-phycore-som: Assign regulator for dsi to lvds bridge
b37946788b2f arm64: dts: imx8mm-phycore-som: Remove magic-packet property
8016d32846f7 arm64: dts: imx8mm-phycore-som: Fix bluetooth wakeup source
9d8e0c3c4f7c arm64: dts: imx8mm-phycore-som: Keep LDO3 on in suspend
b69b4e83993e arm64: dts: freescale: imx8mm-verdin: Remove LVDS panel and backlight
47beab578f6c arm64: dts: colibri-imx8x: Add missing gpio-line-names
20c64688c512 arm64: dts: s32g: add the eDMA nodes
a17008eb460a arm64: dts: imx95: add PCIe's msi-map and iommu-map property
13bbffb4e884 arm64: dts: imx8q: add PCIe EP overlay file for i.MX8QXP mek board
55a2bc97a378 arm64: dts: imx8q: add PCIe EP for i.MX8QM and i.MX8QXP
5e82dd84d613 arm64: dts: imx8-ss-hsio: fix indentation in pcie node
6114dc137559 arm64: dts: freescale: tqma8mqnl: Add vcc-supply for spi-nor
aa74db634145 arm64: dts: freescale: tqma8mqml: Add vcc-supply for spi-nor
8ac725ad672e arm64: dts: freescale: tqma8mq: Add vcc-supply for spi-nor
0b92969081bc arm64: dts: freescale: tqma8mpql: Add vcc-supply for spi-nor
e82710a7796c arm64: dts: imx8-apalis: add clock configuration for 44.1 kHz hdmi audio
05db5bdaa953 arm64: dts: s32g399a-rdb3: Add INA231 sensor entry over I2C4
50df896ee8a8 arm64: dts: s32g: add common 'S32G-EVB' and 'S32G-RDB' board support
e01e9b9dd62f arm64: dts: s32g: add I2C[0..2] support for s32g2 and s32g3
8be8d6f5fd39 arm64: dts: imx8qxp-mek: Complete WM8960 power supplies
1f7da937625a arm64: dts: imx8qm-mek: Complete WM8960 power supplies
6cb4cf4a8959 arm64: dts: imx8dxl-evk: Complete WM8960 power supplies
a823b8504cfc arm64: dts: imx8mp-evk: Complete WM8960 power supplies
f0fb71d2bfd2 arm64: dts: tqma9352-mba93xx[cl]a: swap ethernet aliases
e6c58c4e34f5 arm64: dts: mba93xxca: Do not assert power-down pins
34a0e3de0c9d arm64: dts: freescale: imx93-tqma9352-mba93xxca: sort pinctrl nodes
b41df0cb89cc arm64: dts: mba8xx: Add PCIe support
d0a618f195f1 arm64: dts: tqma8xx: Remove GPU TODO
43419b7de367 arm64: dts: tqma8xx: enable jpeg encode and decode
8eaabcf5b237 arm64: dts: tqma8xx: Add vcc-supply for spi-nor
a1706580b459 arm64: dts: imx8-ss-hsio: Wire up DMA IRQ for PCIe
abcd89649f74 arm64: dts: imx8mn-bsh-smm-s2pro: Remove invalid audio codec clock
73b9c2a4d2cf arm64: dts: imx8mp-skov: increase I2C clock frequency for RTC
15dad674cdf5 arm64: dts: imx8mp-skov: fix phy-mode
35f9d08e683e arm64: dts: imx8mp-skov: describe mains fail detection
918eb1e7f304 arm64: dts: imx8mp-skov: configure uart1 for RS485
b1c4121e92da arm64: dts: imx8mp-skov: describe LVDS display pipeline
4f3d28e9954c arm64: dts: imx8mp-skov: describe HDMI display pipeline
74ff20266638 arm64: dts: imx8mp-skov: use I2C5 for DDC
5ee605182ffa arm64: dts: imx8mp-skov: operate CPU at 850 mV by default
b9feeafd2708 arm64: dts: imx8mp-skov: correct PMIC board limits
6a3290b43d38 arm64: dts: imx8mp-kontron: Add support for reading SD_VSEL signal
afb10648ca50 arm64: dts: imx93-kontron: Fix SD card IO voltage control
7822c3bd0f88 arm64: dts: imx8mm-kontron: Add support for reading SD_VSEL signal
b90dec14cbfd ARM: dts: imx7d-sdb: Complete WM8960 power supplies
96289b986803 ARM: dts: imx6ul-14x14-evk: Complete WM8960 power supplies
baa99fba4fbd scsi: arm64: dts: rockchip: Add UFS support for RK3576 SoC
e1e953869373 scsi: ufs: dt-bindings: Document Rockchip UFS host controller
af1e5d055507 dt-bindings: PCI: brcmstb: Update bindings for PCIe on BCM2712
88b7337af159 dt-bindings: interrupt-controller: Add BCM2712 MSI-X bindings
e08f82eefaa7 dt-bindings: PCI: qcom-ep: Add SAR2130P compatible
4fd2560c686b dt-bindings: PCI: qcom-ep: Consolidate DMA vs non-DMA cases
652e3a3e15ee dt-bindings: PCI: qcom-ep: Enable DMA for SM8450
ffe279433d99 dt-bindings: PCI: qcom-ep: Describe optional IOMMU
cb5305df80d2 dt-bindings: PCI: qcom-ep: Describe optional dma-coherent property
9585b1fcf51a ASoC: dt-bindings: imx-card: Add playback-only and capture-only property
ed671a626791 dt-bindings: atmel-sysreg: Add SAMA7D65 Chip ID
6096197138a9 ARM: dts: microchip: sama7d65: Enable DMAs
e76971437b8a arm64: dts: ti: k3-j722s-evm: Fix USB2.0_MUX_SEL to select Type-C
ad4c5c253cfc ARM: dts: microchip: sama7d65: Add DMAs to sama7d65 SoC
21d60212633f ARM: dts: microchip: sama7d65: Add chipID for sama7d65
0ce77a32a2e4 arm64: dts: ti: k3-j784s4-evm-quad-port-eth-exp1: Remove duplicate hogs
b2c185c86ce6 arm64: dts: ti: k3-am62a-mcu: enable mcu domain pinmux
34a41a24c946 Merge tag 'v6.14-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into HEAD
1a8fe57c561b arm64: dts: exynosautov920: add ufs phy for ExynosAutov920 SoC
53d1e146b05c ARM: dts: imx28-sps1: Fix GPIO LEDs description
10884a5224f4 ARM: dts: vf610-bk4: Use the more specific "lwn,bk4-spi"
edd698009292 arm64: dts: rockchip: disable I2C2 bus by default on RK3588 Tiger
9be02103e21d arm64: dts: rockchip: enable I2C3 in Haikou carrierboard, not Ringneck DTSI
5743a9dda2c4 arm64: dts: rockchip: enable Ethernet in Haikou carrierboard, not Puma DTSI
2420a6d5e78c arm64: dts: rockchip: add EEPROM found on RK3399 Puma Haikou
529f82cf3ce9 arm64: dts: rockchip: enable I2S0 in Haikou carrierboard, not Puma DTSI
28cf8608f8d9 arm64: dts: rockchip: disable I2C6 on Puma DTSI
a7b506f792bf arm64: dts: rockchip: move I2C6 from Haikou carrierboard to Puma DTSI
55a866e88323 arm64: dts: rockchip: move DDC bus from Haikou carrierboard to RK3399 Puma DTSI
27fd1de71a59 arm64: dts: rockchip: enable UART5 on RK3588 Tiger Haikou
6c3bb559bac0 arm64: dts: rockchip: Add Radxa ROCK 4D device tree
3544351bd438 dt-bindings: arm: rockchip: Add Radxa ROCK 4D board
d67cf6de8aac arm64: dts: rockchip: add rk3576 otp node
231a534cd743 arm64: dts: rockchip: add overlay for RK3399 Puma Haikou Video Demo adapter
abbc13f77a26 arm64: dts: rockchip: add overlay for PX30 Ringneck Haikou Video Demo adapter
046e0c70c93b arm64: dts: rockchip: add support for HAIKOU-LVDS-9904379 adapter for PX30 Ringneck
88fdb1f81232 dt-bindings: clock: sun50i-h616-ccu: Add LCD TCON clk and reset
4bb141531379 arm64: dts: allwinner: a100: Add CPU Operating Performance Points table
9fa5a7a0ef3c arm64: dts: allwinner: rg35xx: Add no-thermistor property for battery
31b4873bc1a6 arm64: dts: allwinner: h700: Add USB Host for RG35XX-H
a8a5f54af77e arm64: dts: allwinner: h700: Add LED1 for Anbernic RG35XX
d2ec9636e0dc arm64: dts: allwinner: h700: Set cpusldo to always-on for RG35XX
0e8ebe2be1eb dt-bindings: iio: Add adis16550 bindings
6ad196cd05d5 ARM: dts: mba6ul: change sound card model name
8ae441d65592 ARM: dts: imx7-mba7: change sound card model name
69323e39dc4e ARM: dts: imx6qdl-mba6: change sound card model name
6653d0117e05 dt-bindings: crypto: qcom-qce: Document the X1E80100 crypto engine
2c0efa8b0af1 dt-bindings: rng: add binding for Rockchip RK3588 RNG
23feff06013d dt-bindings: reset: Add SCMI reset IDs for RK3588
5b54b653b964 dt-bindings: gpu: mali-bifrost: Add Allwinner H616 compatible
cd5fe0987644 dt-bindings: trivial-devices: Add ti,tps53681
2be45ede3cbe dt-bindings: net: Add Realtek MDIO controller
afae7a251c1c dt-bindings: net: Add switch ports and interrupts to RTL9300
91d08b436193 dt-bindings: net: Move realtek,rtl9301-switch to net
aaf093926eff dt-bindings: gpu: mali-bifrost: Add compatible for RZ/V2H(P) SoC
2819855d187d mips: dts: ralink: mt7620a: update system controller node and its consumers
a2166e814c84 mips: dts: ralink: rt3883: update system controller node and its consumers
339e08846279 mips: dts: ralink: rt3050: update system controller node and its consumers
d3abcf7cf3ae mips: dts: ralink: rt2880: update system controller node and its consumers
84e9b0c2fff8 dt-bindings: clock: add clock definitions for Ralink SoCs
c28b259be385 dt-bindings: arm: coresight-tmc: Add "memory-region" property
f1546685ce0f ARM: dts: renesas: r9a06g032: Fix UART dma channel order
6a6883b926ad arm64: dts: renesas: rzg2: Add boot phase tags
9abb2281477d arm64: dts: renesas: rcar: Add boot phase tags
7795d76bbbc2 ARM: dts: renesas: rcar-gen2: Add boot phase tags
9e0d9f1c47ea arm64: dts: renesas: white-hawk-csi-dsi: Use names for CSI-2 data line orders
dc4f388ab13e arm64: dts: renesas: ulcb/kf: Use TDM Split Mode for capture
7dbc206c43da arm64: dts: renesas: Add initial support for MYIR Remi Pi
ee00ebca3993 arm64: dts: renesas: r9a08g045: Add OPP table
61c8b03d8ef2 arm64: dts: renesas: r9a09g057: Enable SYS node
0815ca2096bf arm64: dts: renesas: r9a09g047: Add SYS node
c36b3a2f01df arm64: dts: renesas: r9a08g045: Enable SYS node
e6d40d0d2cfb arm64: dts: renesas: r8a779f0: Disable rswitch ports by default
44cb5b4c5426 arm64: dts: renesas: r9a08g045s33-smarc-pmod: Add overlay for SCIF1
703f038f08d8 arm64: dts: renesas: rzg3s-smarc: Enable SCIF3
6706d23f287c arm64: dts: renesas: rzg3s-smarc-switches: Add a header to describe different switches
90d900e27288 arm64: dts: renesas: r8a779g0: Restore sort order
78dba0214fc6 arm64: dts: renesas: s4sk: Fix ethernet0 alias for rswitch
65e95070b6ba arm64: dts: renesas: spider-ethernet: Add ethernetN aliases for rswitch
caed2eab1bd4 arm64: dts: renesas: s4sk: Access rswitch ports via phandles
1cacb8200b69 arm64: dts: renesas: spider-ethernet: Access rswitch ports via phandles
a7c45e21fd00 arm64: dts: renesas: r8a779f0: Add labels for rswitch ports
d4ed59cf46f5 arm64: dts: renesas: Add initial device tree for Yuridenki-Shokai Kakip board
e359d28948ce arm64: dts: renesas: eagle-function-expansion: Align GPIO hog name with bindings
3d56ae096af8 arm64: dts: renesas: r8a779h0: Add VSPX instance
ae94b3852fbe arm64: dts: renesas: r8a779h0: Add FCPVX instance
ba28a5391cc6 arm64: dts: renesas: rzg3e-smarc-som: Enable watchdog
bb86f1ab211a arm64: dts: renesas: r9a09g047: Add WDT1-WDT3 nodes
bdfecb224c52 arm64: dts: renesas: gray-hawk-single: Restore sort order
149c2679df26 arm64: dts: renesas: r8a779a0: Add VSPX instances
afdd241afcbc arm64: dts: renesas: r8a779a0: Add FCPVX instances
6c91cfa7eda2 arm64: dts: renesas: gray-hawk-single: Describe AVB1 and AVB2
a6305fea1136 arm64: dts: renesas: r8a779h0: Remove #address- and #size-cells from AVB[0-2]
e384ea6d2c06 arm64: dts: renesas: r8a77990: Re-add voltages to OPP table
b94a86f224ed arm64: dts: renesas: r8a774c0: Re-add voltages to OPP table
73035ca45197 mips: dts: realtek: Add restart to Cisco SG220-26P
da5e72c52240 mips: dts: realtek: Add RTL838x SoC peripherals
e1258dbdceed mips: dts: realtek: Replace uart clock property
05fddbb7ebd9 mips: dts: realtek: Correct uart interrupt-parent
a457e7128f11 mips: dts: realtek: Add SoC IRQ node for RTL838x
57bde8194b75 mips: dts: realtek: Fold rtl83xx into rtl838x
64c98fba1502 mips: dts: realtek: Add address to SoC node name
9f6b4016f45a mips: dts: realtek: Clean up CPU clocks
a015cd4a0443 mips: dts: realtek: Decouple RTL930x base DTSI
e452c3447525 MIPS: mobileye: dts: eyeq6h: Enable cluster support
4913d71e6942 dt-bindings: mips: mips-cm: Add a new compatible string for EyeQ6
0b2d5fd80af4 dt-bindings: mips: Document mti,mips-cm
a429699ec2e2 dt-bindings: ata: Convert fsl,pq-sata to YAML
ac47e5894fc3 dt-bindings: hwinfo: samsung,exynos-chipid: add exynos7870-chipid compatible
93b63c5675fe media: dt-bindings: adv7180: Document the 'interrupts' property
a1c70718bc0f media: dt-bindings: aspeed,video-engine: Convert to json schema
4da9a2e40dd4 dt-bindings: media: st,stmipid02: correct lane-polarities maxItems
ae847cba005e mips: dts: ingenic: Switch to simple-audio-card,hp-det-gpios
f72623fbd64c arm64: dts: rockchip: rk356x: Move PCIe MSI to use GIC ITS instead of MBI
573d01eb7714 arm64: dts: rockchip: rk356x: Add MSI controller node
a62671cb3851 dt-bindings: xilinx: Deprecate header with firmware constants
d48d272341e2 arm64: zynqmp: Use DT header for firmware constants
c2265415c9c1 dt-bindings: power: supply: axp20x-battery: Add x-powers,no-thermistor
1c2d49b11f41 dt-bindings: vendor-prefixes: Document the 'pciclass' prefix
8fe54d8c1e6a dt-bindings: trivial-devices: Add ti,tps546b24
0c947a496323 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
ea5adb18bcaf dt-bindings: mfd: Add maxim,max77705
f5071bfa82eb dt-bindings: power: supply: add maxim,max77705 charger
26b6ca520742 dt-bindings: leds: qcom-lpg: Document PM8937 PWM compatible
115f06126ec6 dt-bindings: leds: backlight: apple,dwi-bl: Add Apple DWI backlight
ec6ae18eb982 spi: dt-bindings: Convert Freescale SPI bindings to YAML
b24a6dbfc7c3 Merge tag 'linux-can-next-for-6.15-20250219' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next
a17a9095c7fa ARM: dts: nxp: vf: Align GPIO hog name with bindings
90cfeb11e6bd dt-bindings: net: dsa: b53: add BCM53101 support
6df8500248bb dt-bindings: power: reset: xilinx: Make "interrupts" property optional
84dd8dd4c6b0 dt-bindings: power: reset: atmel,sama5d2-shdwc: Add microchip,sama7d65-shdwc
24ab1372bbf2 dt-bindings: input: touchscreen: Add Z2 controller
2dbbd7ff619b ASoC: dt-bindings: atmel-at91sam9g20ek: convert to json-schema
2e73e48c20e4 dt-bindings: usb: samsung,exynos-dwc3 Add exynos990 compatible
c554695fa890 USB: docs: Fix typo in aspeed-lpc.yaml
6f18dd0694b2 dt-bindings: usb: usb-device: Replace free-form 'reg' with constraints
f57d58abdd1f dt-bindings: usb: microchip,usb2514: add support for USB2512/USB2513
22c582f7410c dt-bindings: usb: microchip,usb2514: add support for vdda
bbd705c2b5f9 dt-binding: can: mcp251xfd: remove duplicate word
5ccbb5ed0811 dt-bindings: can: fsl,flexcan: add S32G2/S32G3 SoC support
b3155d3e94f8 dt-bindings: pinctrl: samsung: add exynos2200 compatible
b6ea4790ddc5 dt-bindings: pinctrl: samsung: add exynos2200-wakeup-eint compatible
c7b5bd42aef7 dt-bindings: hwinfo: samsung,exynos-chipid: add exynos2200 compatible
85d161c64b09 dt-bindings: soc: samsung: exynos-pmu: add exynos2200 compatible
467349660659 dt-bindings: soc: samsung: exynos-sysreg: add sysreg compatibles for exynos2200
f3a49191d711 arm64: dts: apple: Add SPI NOR nvram partition to all devices
32fb252ce1f3 arm64: dts: apple: t600x: Add spi controller nodes
7b672e8683fb arm64: dts: apple: t8112: Add spi controller nodes
11383e8e5d7f arm64: dts: apple: t8103: Add spi controller nodes
df2301056fc8 arm64: dts: apple: t8103: Fix spi4 power domain sort order
588bf84fbfc5 riscv: dts: starfive: jh7110-pine64-star64: enable USB 3.0 port
2260adebc79d riscv: dts: starfive: jh7110: pciephy0 USB 3.0 configuration registers
d46cea021cfc riscv: dts: starfive: fml13v01: enable pcie1
aca9a5c6177d riscv: dts: starfive: remove non-existent dac from jh7110
714ea90c3680 arm64: dts: apple: t7000: Add missing CPU p-state 7 for J96 and J97
b27dd2587832 ARM: dts: imx5: Fix the CCM interrupts description
028660f03192 ARM: dts: vfxxx: Fix the CAAM job ring node names
18d135dfe74a arm64: dts: mediatek: mt6359: fix dtbs_check error for audio-codec
1341f30d43e8 Merge drm/drm-next into drm-misc-next
4e43cbdb48d1 ARM: dts: imx53-ppd: Fix touchscreen reset-gpios
4ba7c5cec4fc ARM: dts: imx7s: Move csi-mux to below root
1d0f023c6ebe riscv: sophgo: dts: add cooling maps for Milk-V Pioneer
67fd41fa38f7 riscv: sophgo: dts: add pwm-fan for Milk-V Pioneer
af97acf23d50 dt-bindings: net: ethernet-phy: add property tx-amplitude-100base-tx-percent
3c2fcb7fd8f4 arm64: versal-net: Add description for b2197-00 revA board
51a5e958e52c dt-bindings: soc: Add new VN-X board description based on Versal NET
b3d3914cdb96 ASoC: tas2764: Random patches from the Asahi Linux
17494bd5ec3e riscv: dts: spacemit: Add Milk-V Jupiter board device tree
7154a6c8889d dt-bindings: riscv: spacemit: Add Milk-V Jupiter board compatible
b42bf3977a7b Merge commit '71f0dd5a3293d75d26d405ffbaedfdda4836af32' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next into for-6.15/io_uring-rx-zc
7faa56193b95 ASoC: dt-bindings: wlf,wm8960: add 'port' property
eaa850920663 arm64: dts: imx95-19x19-evk: add typec nodes and enable usb3 node
d145eb78bb29 arm64: dts: imx95: add usb3 related nodes
9e8c9998017c ARM: dts: mxs: Add descriptions for imx287 based btt3-[012] devices
327f79156245 dt-bindings: arm: Document the btt3 i.MX28 based board
77f03f406681 arm64: dts: imx8qm-mek: add audio-codec cs42888 and related nodes
f55a6cd37037 arm64: dts: imx8mq-librem5: remove undocument property 'extcon' for usb-pd@3f
cfac8cba2afb ARM: dts: microchip: sama7d65_curiosity: Add power monitor support
713b56b62a21 arm64: dts: exynosautov920: add CPU cache information
95afa38c66b5 ARM: dts: microchip: sama7d65: Add flexcom 10 node
11815f2bda26 ARM: dts: at91: usb_a9g20_lpw: use proper mmc node name
f2f5d8164a85 ARM: dts: at91: calao_usb: fix button nodes
4320615849bc ARM: dts: at91: use correct vendor name for Calao boards
fc606a98fb4c ARM: dts: at91: calao_usb: remove heartbeat for User LEDs
adf5d3205c13 ARM: dts: at91: calao_usb: fix wrong polarity for LED
02b371776f9f Merge 6.14-rc3 into usb-next
c79ef81e8b3f Merge 6.14-rc3 into tty-next
5d5087e055bc dt-bindings: iio: adc: Introduce ADS7138
81b74faf1bbd dt-bindings: iio: adc: add ADI ad4030, ad4630 and ad4632
4800c4aaad00 arm64: dts: rockchip: Add rng node to RK3588
fb5624b3aff6 dt-bindings: iio: adc: add ad4851
29c6d2f72796 dt-bindings: iio: adc: add ad485x axi variant
2aa06934b04b arm64: dts: exynos: gs101: add ACPM protocol node
9a410d40fffc arm64: dts: exynos: gs101: add AP to APM mailbox node
f67a8cbbc893 arm64: dts: exynos: gs101: add SRAM node
fd1eea66f8ff dt-bindings: firmware: add google,gs101-acpm-ipc
0c84b9a92cd8 dt-bindings: media: clarify stm32 csi & simplify example
cb82b9a812fb arm64: dts: exynos: gs101: add reboot-mode support (SYSIP_DAT0)
cafb5b1128f9 arm64: dts: exynos: gs101: align poweroff writes with downstream
b7103d0c00e2 arm64: dts: exynos: gs101: drop explicit regmap from reboot nodes
388e7272d092 arm64: dts: rockchip: Add devicetree for the ROC-RK3576-PC
89026942ddd0 dt-bindings: arm: rockchip: Add Firefly ROC-RK3576-PC binding
11054a56eb5e arm64: dts: rockchip: minimal support for Pre-ICT tester adapter for RK3588 Jaguar
fa30dcce2020 dt-bindings: soc: qcom: qcom,pmic-glink: Document SM8750 compatible
df945fcbeec5 Merge branch '20250109-qcs8300-mm-patches-new-v4-0-63e8ac268b02@quicinc.com' into clk-for-6.15
7c12a4b2f62e dt-bindings: clock: qcom: Add QCS8300 video clock controller
1f3bb677cac5 dt-bindings: clock: qcom: Add CAMCC clocks for QCS8300
d11f22ad6f0e dt-bindings: clock: qcom: Add GPU clocks for QCS8300
fd809190482c Merge branch '20250203063427.358327-2-alexeymin@postmarketos.org' into clk-for-6.15
5980968a3736 dt-bindings: clock: gcc-sdm660: Add missing SDCC resets
024211d099c3 dt-bindings: clock: gcc-sdm660: Add missing SDCC resets
b8807b3e1cb2 dt-bindings: clock: qcom,rpmcc: Add SDM429
5bce17b9c9ff pmdomain: Merge branch dt into next
82ed9883247a dt-bindings: power: add V853 ppu bindings
68169a0560d8 dt-bindings: serial: Add bindings for nvidia,tegra264-utc
668773b787ac dt-bindings: serial: Allow fsl,ns16550 with broken FIFOs
9648d88104e5 dt-bindings: usb: Add Parade PS8830 Type-C retimer bindings
0c7c8b465ec2 dt-bindings: usb: dwc3: Add a property to reserve endpoints
e939f6d880e2 Merge tag 'drm-misc-next-2025-02-12' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
03f675fb2209 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
a1e21c6557d7 dt-bindings: imx: fsl,aips-bus: Ensure all properties are defined
9367c9acdab1 dt-bindings: phy: Add ExynosAutov920 UFS PHY bindings
4e5d9b054e9d dt-bindings: phy: samsung,usb3-drd-phy: gs101: require Type-C properties
7aa26eec3f52 dt-bindings: phy: samsung,usb3-drd-phy: add blank lines between DT properties
8fc192d8c786 dt-bindings: display: bridge: sn65dsi83: Add interrupt
27bd4bb30fdc dt-bindings: power: rpmpd: Fix comment for SM6375
2a0abedef196 arm64: dts: mediatek: mt8188: Add tertiary eMMC/SD/SDIO controller
58186cbc681f arm64: dts: mediatek: mt8188: Add VDO0's DSC and MERGE block nodes
9385b92b564a arm64: dts: mediatek: mt8188: Assign apll1 clock as parent to avoid hang
04c7795892af ARM: dts: ixp4xx: Add Netgear WG302 v1 GPIOs
e672efae7f1f ARM: dts: ixp4xx: Fix up PCI on WG302
dfe984c10836 ARM: dts: Properly assign NPE to ethA
47c38f7af771 loongarch: dts: remove non-existent DAC from 2k1000-ref
aecbe697ed9a ARM: dts: cirrus: ep7211: Align GPIO hog name with bindings
a950ae069eeb arm64: dts: exynos8895: Rename PMU nodes to fixup sorting
6aebfac1f2e6 arm64: dts: mediatek: add device-tree for Genio 510 EVK board
0a53b5690395 arm64: dts: mediatek: mt8390-genio-700-evk: Move common parts to dtsi
cd85db03d191 arm64: dts: marvell: Add missing board compatible for IEI-Puzzle-M801
37f65442ac9b arm64: dts: marvell: Fix missing/incorrect "marvell,armada3710" compatible
3f3f0055504c arm64: dts: marvell: Drop incomplete root compatible/model properties
900bc3ca59b4 dt-bindings: marvell: armada-7k-8k: Add missing 7040 and 8040 board compatibles
fdd9abb2b187 dt-bindings: marvell: armada-7k-8k: Move Armada 8KPlus to schema
42c1447c23e2 dt-bindings: marvell: armada-37xx: Add glinet,gl-mv1000 compatible
94879a4116ea arm64: dts: rockchip: Enable HDMI1 on Orange Pi 5 Max
2a8407332ac4 dt-bindings: pwm: Add support for PWM nexus node
481e9de30692 riscv: dts: starfive: Unify regulator naming scheme
a93373b7988b dt-bindings: media: camss: Add qcom,sdm670-camss
909002479174 arm64: dts: rockchip: linewrap gmac assigned-clocks on Quartz64 Model A/B files a bit
8457c997e974 arm64: dts: rockchip: remove rk3588 optee node
47e426fb98b2 dt-bindings: iio: dac: adi-axi-adc: add ad7606 variant
5116c83b9333 dt-bindings: iio: adc: adi,ad4695: add SPI offload properties
3ca14f0620da dt-bindings: leds: Convert leds-tlc591xx.txt to yaml format
e96e93245d76 dt-bindings: net: rfkill-gpio: enable booting in blocked state
1bf0b9eea5fd arm64: dts: rockchip: Enable HDMI1 out for Edgeble-6TOPS Modules
b0d56064489f arm64: dts: rockchip: Enable HDMI1 on rock-5b
873d0d388c38 arm64: dts: rockchip: Add HDMI1 node on RK3588
8716e9c85925 arm64: dts: rockchip: Add PHY node for HDMI1 TX port on RK3588
ad3eee0eda32 arm64: dts: rockchip: Enable SPDIF output on H96 Max V58
e51f476b2549 arm64: dts: rockchip: Add SPDIF nodes to RK3588(s) device trees
71a14fc267ad dt-bindings: net: smsc,lan9115: Ensure all properties are defined
5de2b7dc7768 dt-bindings: memory-controllers: samsung,exynos4210-srom: Split out child node properties
cd66a94e6d99 dt-bindings: memory-controllers: qcom,ebi2: Split out child node properties
0c6820b22794 dt-bindings: memory-controllers: Move qcom,ebi2 from bindings/bus/
94d614fdbd9a Merge tag 'spi-offload' into togreg
92fae782ee1d Documentation: Remove repeated word in docs
cf9f02118fe1 dt-bindings: phy: qcom,qmp-pcie: Drop reset number constraints
37229c163579 dt-bindings: phy: qcom,qmp-pcie: Add X1P42100 PCIe Gen4x4 PHY
913df9ddc676 dt-bindings: phy: Add rk3576 hdptx phy
33ebb61a9413 dt-bindings: display: panel: Add KD110N11-51IE and 2082109QFH040022-50E
d7efe5059077 dt-bindings: ASoC: rockchip: Add compatible for RK3588 SPDIF
9dd06b8dd8ac dt-bindings: dma: convert atmel-dma.txt to YAML
b25933f5b573 dt-bindings: vendor-prefixes: Update rockchip company name
a8e1f2c3f715 arm64: dts: rockchip: add dts for Ariaboard Photonicat RK3568
0b22b27cde74 dt-bindings: arm: rockchip: Add Ariaboard Photonicat RK3568
7ce8f717740a dt-bindings: vendor-prefixes: Add prefix for Ariaboard
17038a66bb8b arm64: dts: rockchip: switch Rock 5C to PMIC-based TSHUT reset
a7fde791ce29 arm64: dts: rockchip: add 'chassis-type' property on PineNote
acd8eab1d823 dt-bindings: clock: rk3188-common: add PCLK_CIF0/PCLK_CIF1
7d004cf97e38 dt-bindings: soc: renesas: Document MYIR Remi Pi board
d798bb42d18b arm64: dts: apple: t8015: Add cpufreq nodes
142ff02c87ca arm64: dts: apple: t8012: Add cpufreq nodes
423ad63e9ff5 arm64: dts: apple: t8011: Add cpufreq nodes
6fd3a983e7aa arm64: dts: apple: t8010: Add cpufreq nodes
2327e547433d arm64: dts: apple: s8001: Add cpufreq nodes
a5f95a9c11ca arm64: dts: apple: Add cpufreq nodes for S8000/S8003
d48321d9c0a2 arm64: dts: apple: t7001: Add cpufreq nodes
5af5ae6d020a arm64: dts: apple: t7000: Add cpufreq nodes
62a511b2e51a arm64: dts: apple: s5l8960x: Add cpufreq nodes
66b42d66b597 arm64: dts: apple: t8015: Add PMGR nodes
0f7c9deb5489 arm64: dts: apple: t8012: Add PMGR nodes
0f9f2a165a57 arm64: dts: apple: t8011: Add PMGR nodes
cc770ee797ee arm64: dts: apple: t8010: Add PMGR nodes
ab8f4186a843 arm64: dts: apple: s8001: Add PMGR nodes
b5e2aa91fa41 arm64: dts: apple: s800-0-3: Add PMGR nodes
262b4c2c6b63 arm64: dts: apple: t7001: Add PMGR node
4eccd0ed15e8 arm64: dts: apple: t7000: Add PMGR node
5cad2b1f1511 arm64: dts: apple: s5l8960x: Add PMGR node
3ae627f53660 dt-bindings: arm: apple: apple,pmgr-pwrstate: Add A7-A11, T2 compatibles
cf1acfdcd1ab dt-bindings: arm: apple: apple,pmgr: Add A7-A11, T2 compatibles
e6b8b4eb2893 arm64: dts: apple: Add T2 devices
3635f84149d5 dt-bindings: arm: apple: Add T2 devices
ecb90807423a arm64: dts: apple: Split s8000/s8003 SoC DTS files
0332b153fa3e dt-bindings: crypto: Add Inside Secure SafeXcel EIP-93 crypto engine
ad30fd49aa1e ARM: dts: sunxi: add support for NetCube Systems Kumquat
0463c05da755 ARM: dts: sunxi: add uart1_pe pinctrl for sun8i-v3s
64ab025e91c5 dt-bindings: arm: sunxi: Add NetCube Systems Kumquat board
135ecb1c0900 dt-bindings: vendor-prefixes: Add NetCube Systems Austria name
ba07d9983cd2 dt-bindings: iio: adf4371: add refin mode
95eb7af6dfd3 dt-bindings: iio: light: Add APDS9160 binding
32ed0be023c0 dt-bindings: iio: magnetometer: add binding for Si7210
3d902b3b97b5 riscv: sophgo: dts: add pwm controller for SG2042 SoC
c6a0c59c390f spi: dt-bindings: axi-spi-engine: add SPI offload properties
26ad965c5d62 dt-bindings: trigger-source: add generic PWM trigger source
69e102cfc84d dt-bindings: display: panel: Add compatible for CSOT PNA957QT1-1
a854ffec9ddf dt-bindings: vendor-prefixes: add csot
66fd41e84bce dt-bindings: mtd: arasan,nand-controller: Ensure all properties are defined
e0661cab113c dt-bindings: media: Add video support for QCOM SM8550 SoC
1e83da324d74 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
d30a4e7e782c Add static channel mapping between soundwire master
f9d3323c1b73 ASoC: cpcap: Implement jack headset detection
926489106ec0 This is continued work on Samsung S9(SM-9600)
0332d1781ba7 dt-bindings: media: camss: Add qcom,sm8550-camss binding
c6a4614b770b media: dt-bindings: update clocks for sc7280-camss
4c1200c39b8f Merge drm/drm-next into drm-misc-next
70de7a1b60f4 ASoC: dt-bindings: wcd937x-sdw: Add static channel mapping support
33c6fb10fda1 arm64: dts: mediatek: add support for MT8370 SoC
3d0e1130cf33 dt-bindings: arm: mediatek: add mt8370-evk board
d2d62c5d0e90 arm64: dts: rockchip: Fix label name of hdptxphy for RK3588
6605f13b8e1b arm64: dts: rockchip: Add HDMI0 PHY PLL clock source to VOP2 on RK3588
f962971332b4 arm64: dts: rockchip: Enable HDMI0 PHY clk provider on RK3588
1d392f374a7e dt-bindings: display: vop2: Add optional PLL clock properties
5ab646d63942 dt-bindings: display: rockchip: Fix label name of hdptxphy for RK3588 HDMI TX Controller
c2cc31a23d6c Revert "dt-bindings: serial: 8250: Add Airoha compatibles"
41f6c94c3fb4 ARM: dts: omap4-panda-a4: Add missing model and compatible properties
464c5f08f7cf dt-bindings: omap: Add TI Pandaboard A4 variant
66677d9f9b16 ARM: dts: ti/omap: omap4-serial: fix interrupts syntax
a6f47d7ebfcc ARM: dts: ti: omap: Align GPIO hog name with bindings
ffdbb206b0a5 arm64: dts: exynos8895-dreamlte: enable support for the touchscreen
21356aba4c79 arm64: dts: exynos8895-dreamlte: enable support for microSD storage
4b146b3f86ce arm64: dts: exynos8895: add a node for mmc
6a0044cd3e17 arm64: dts: exynos8895: define all usi nodes
2d75cfaed428 arm64: dts: exynos8895: add syscon nodes for peric0/1 and fsys0/1
9649031bcf98 Merge branch 'for-v6.15/samsung-soc-dt-bindings' into next/dt64
5a27c5397796 arm64: dts: exynos990: Rename and sort PMU nodes
fad948b46dc1 arm64: dts: exynos990: Add CMU_PERIS and MCT nodes
f51ef9e1e5ee Merge branch 'for-v6.15/samsung-clk-dt-bindings' into next/dt64
a517cff67d7a dt-bindings: soc: samsung: usi: add USIv1 and samsung,exynos8895-usi
0f0ca5993559 arm64: dts: mediatek: add display support for mt8365-evk
08a19a12abe1 arm64: dts: mediatek: add display blocks support for the MT8365 SoC
cbbc4673a9d2 arm64: dts: mediatek: mt8173: Fix some node names
5b7068d50a96 arm64: dts: mediatek: mt8173: Fix disp-pwm compatible string
3bc44bb385f8 arm64: dts: mediatek: mt8173-elm: Drop pmic's #address-cells and #size-cells
e8d00ab25c72 arm64: dts: airoha: en7581: Add default partition table for EVB board
d8075291fd7f arm64: dts: airoha: en7581: Add SNAND node
63cd70f67e52 arm64: dts: airoha: en7581: Add Clock Controller node
1e23fdb8aebc ASoC: dt-bindings: atmel,at91-ssc: Convert to YAML format
f092663478cd dt-bindings: pwm: sophgo: add PWM controller for SG2042
1f3f3de0aec6 dt-bindings: eeprom: at24: Add compatible for Giantec GT24P128E
4fba896db2e6 dt-bindings: eeprom: at24: Add compatible for Puya P24C64F
6392d4e28d8d dt-bindings: gpio: ast2400-gpio: Add hogs parsing
138b4d48b94a dt-bindings: net: faraday,ftgmac100: Add phys mode
b570187febfc riscv: dts: microchip: update pcie reg properties to new format
42dcb803b930 ASoC: dt-bindings: Add bindings for WCD934x DAIs
09c3b9df3660 dt-bindings: serial: pl011: Add optional power-domains property
4f0c7d1b5ac2 dt-bindings: serial: 8250: Add Airoha compatibles
ee81474fbc7b dt-bindings: serial: Add a new compatible string for UMS9632
9b704b0c3665 dt-bindings: clock: exynos990: Add CMU_PERIS block
a9c4ff6507a2 arm64: dts: exynos: gs101-raven: add new board file
a7bb8998ddf1 arm64: dts: exynos: gs101-oriole: move common Pixel6 & 6Pro parts into a .dtsi
da0ca70f88e6 arm64: dts: exynos: gs101-oriole: configure simple-framebuffer
dac1e08cdece dt-bindings: arm: google: add gs101-raven
080186bec3c2 arm64: dts: exynos: gs101: disable pinctrl_gsacore node
7c74bfc98c0c ARM: zynq: Do not define address/size-cells for nand-controller
ff5e3b12865d dt-bindings: iio: accel: mc3230: document mc3510c
4fc3fd99ee16 dt-bindings: iio: Correct indentation and style in DTS example
3af3fc397fdf dt-bindings: xilinx: Remove desciption for 16550 uart
a4e34a5b5e49 dt-bindings: xilinx: Remove description for SystemACE
7f8cc3643d7a dt-bindings: xilinx: Remove uartlite from xilinx.txt
666456d4cf96 arm64: zynqmp: add clock-output-names property in clock nodes
8a33cbb41574 ARM: zynq: Remove ethernet0 alias from Microzed
8dfe6851b546 ARM: zynq: Add sdhci to alias node
9ddc09b7b0df ARM: zynq: Enable QSPIs on platforms
6d73675978fe ARM: zynq: Fix fpga region DT nodes name
6c76353caff0 ARM: zynq: Rename i2c?-gpio to i2c?-gpio-grp
15fafeb17cb9 ARM: zynq: Define rtc alias on zc702/zc706
831329e67d45 ARM: zynq: Point via nvmem0 alias to eeprom on zc702/zc706
a4f4075bb7d0 ARM: zynq: Define u-boot bootscrip addr via DT
7f8aedee7529 ARM: zynq: Wire smcc with nand/nor memories on zc770 platform
8bcb31d8083c ARM: zynq: Mark boot-phase-specific device nodes
ef23211239f5 ARM: zynq: DT: List OCM memory for all platforms
85f3e03e1434 ARM: zynq: Remove deprecated device_type property
7e6f927d6b95 ARM: zynq: Replace 'io-standard' with 'power-source' property
83abe9885c89 dt-bindings: interrupt-controller: Add risc-v,aplic hart indexes
c05988583566 ARM: dts: stm32: lxa-fairytux2: add Linux Automation GmbH FairyTux 2
f2edad670168 dt-bindings: arm: stm32: add compatible strings for Linux Automation GmbH LXA FairyTux 2
3b3bc35e81ac dt-bindings: soc: renesas: Add RZ/G3E variant SYS binding
cb2e0436ada7 dt-bindings: soc: renesas: Document Yuridenki-Shokai Kakip board
6057199eb478 dt-bindings: vendor-prefixes: Add Yuridenki-Shokai Co. Ltd.
3c4392efd5f9 dt-bindings: soc: renesas: Document more Renesas RZ/V2H SoC variants
c09fc0ef8abe arm64: dts: rockchip: Use "dma-noncoherent" in base RK3588 SoC dtsi
ec750fb661af arm64: dts: rockchip: Describe why is HWRNG disabled in RK356x base dtsi
3aee8aaf8a6c arm64: dts: rockchip: Enable HDMI on armsom-sige7
1660f72aa147 arm64: dts: rockchip: Enable automatic fan control on Radxa Rock 5C
55073acc624c arm64: dts: rockchip: Add finer-grained PWM states for the fan on Rock 5C
b112f324c2a9 arm64: dts: rockchip: Enable USB OTG for Radxa ROCK Pi E
41123c761619 arm64: dts: rockchip: add support for sound output over HDMI on RK3399 Puma Haikou
edc802632427 ARM: dts: ti: davinci: Align GPIO hog name with bindings
8bdeb1cbd5b4 dt-bindings: hwmon: lm90: Add support for NCT7716, NCT7717 and NCT7718
5502124072e1 dt-bindings: hwmon: ltc2978: add support for ltm4673
eb140dbbba76 arm64: dts: imx8mp-skov-reva: Use hardware signal for SD card VSELECT
63a6c68df7cb dt-bindings: regulator: pca9450: Add properties for handling LDO5
cb0906024c41 dt-bindings: mfd: motorola-cpcap: Document audio-codec interrupts
c0cfd3272eb3 dt-bindings: display: renesas,du: add top-level constraints
dba95e8dd801 dt-bindings: display: renesas,du: narrow interrupts and resets per variants
b1ac75c9a524 dt-bindings: display: rockchip: Add rk3576 hdmi controller

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

1093 files changed:
Bindings/arm/apple.yaml
Bindings/arm/apple/apple,pmgr.yaml
Bindings/arm/arm,coresight-tmc.yaml
Bindings/arm/arm,morello.yaml [new file with mode: 0644]
Bindings/arm/atmel-at91.yaml
Bindings/arm/atmel-sysregs.txt
Bindings/arm/cpus.yaml
Bindings/arm/fsl.yaml
Bindings/arm/google.yaml
Bindings/arm/marvell/armada-37xx.yaml
Bindings/arm/marvell/armada-7k-8k.yaml
Bindings/arm/marvell/armada-8kp.txt [deleted file]
Bindings/arm/mediatek.yaml
Bindings/arm/pmu.yaml
Bindings/arm/qcom,coresight-ctcu.yaml [new file with mode: 0644]
Bindings/arm/qcom,coresight-tpda.yaml
Bindings/arm/qcom,coresight-tpdm.yaml
Bindings/arm/rockchip.yaml
Bindings/arm/stm32/st,stm32-syscon.yaml
Bindings/arm/stm32/stm32.yaml
Bindings/arm/sunxi.yaml
Bindings/arm/ti/omap.yaml
Bindings/ata/ceva,ahci-1v84.yaml
Bindings/ata/fsl,pq-sata.yaml [new file with mode: 0644]
Bindings/ata/fsl-sata.txt [deleted file]
Bindings/clock/allwinner,sun55i-a523-ccu.yaml [new file with mode: 0644]
Bindings/clock/atmel,at91rm9200-pmc.yaml
Bindings/clock/imx8m-clock.yaml
Bindings/clock/imx8mp-audiomix.yaml
Bindings/clock/mediatek,mt8188-clock.yaml
Bindings/clock/mediatek,mtmips-sysc.yaml
Bindings/clock/qcom,ipq9574-nsscc.yaml [new file with mode: 0644]
Bindings/clock/qcom,rpmcc.yaml
Bindings/clock/qcom,sc7280-lpasscorecc.yaml
Bindings/clock/qcom,sm8450-camcc.yaml
Bindings/clock/qcom,x1e80100-camcc.yaml
Bindings/clock/rockchip,rk3528-cru.yaml [new file with mode: 0644]
Bindings/clock/rockchip,rk3562-cru.yaml [new file with mode: 0644]
Bindings/clock/samsung,exynos2200-cmu.yaml [new file with mode: 0644]
Bindings/clock/samsung,exynos7870-cmu.yaml [new file with mode: 0644]
Bindings/clock/samsung,exynos990-clock.yaml
Bindings/clock/ti,clkctrl.yaml [new file with mode: 0644]
Bindings/clock/ti-clkctrl.txt [deleted file]
Bindings/connector/gocontroll,moduline-module-slot.yaml [new file with mode: 0644]
Bindings/cpufreq/cpufreq-qcom-hw.yaml
Bindings/crypto/fsl,sec2.0.yaml [new file with mode: 0644]
Bindings/crypto/fsl-sec2.txt [deleted file]
Bindings/crypto/inside-secure,safexcel-eip93.yaml [new file with mode: 0644]
Bindings/crypto/inside-secure,safexcel.yaml
Bindings/crypto/qcom,prng.yaml
Bindings/crypto/qcom-qce.yaml
Bindings/display/apple,h7-display-pipe-mipi.yaml [new file with mode: 0644]
Bindings/display/apple,h7-display-pipe.yaml [new file with mode: 0644]
Bindings/display/bridge/lvds-codec.yaml
Bindings/display/bridge/nwl-dsi.yaml
Bindings/display/bridge/ti,sn65dsi83.yaml
Bindings/display/mediatek/mediatek,dpi.yaml
Bindings/display/mediatek/mediatek,dsc.yaml
Bindings/display/msm/dsi-controller-main.yaml
Bindings/display/msm/dsi-phy-common.yaml
Bindings/display/msm/gmu.yaml
Bindings/display/msm/qcom,sa8775p-mdss.yaml
Bindings/display/msm/qcom,sm8550-mdss.yaml
Bindings/display/msm/qcom,sm8650-mdss.yaml
Bindings/display/panel/apple,summit.yaml [new file with mode: 0644]
Bindings/display/panel/himax,hx83102.yaml
Bindings/display/panel/mitsubishi,aa104xd12.yaml
Bindings/display/panel/panel-simple-lvds-dual-ports.yaml
Bindings/display/panel/panel-simple.yaml
Bindings/display/panel/raydium,rm67200.yaml [new file with mode: 0644]
Bindings/display/panel/visionox,rm692e5.yaml [new file with mode: 0644]
Bindings/display/renesas,du.yaml
Bindings/display/rockchip/rockchip,rk3588-dw-hdmi-qp.yaml
Bindings/display/rockchip/rockchip-vop2.yaml
Bindings/display/tegra/nvidia,tegra114-mipi.yaml
Bindings/dma/atmel,at91sam9g45-dma.yaml [new file with mode: 0644]
Bindings/dma/atmel,sama5d4-dma.yaml
Bindings/dma/atmel-dma.txt [deleted file]
Bindings/dma/fsl,edma.yaml
Bindings/dma/fsl,elo-dma.yaml [new file with mode: 0644]
Bindings/dma/fsl,elo3-dma.yaml [new file with mode: 0644]
Bindings/dma/fsl,eloplus-dma.yaml [new file with mode: 0644]
Bindings/dma/fsl,mxs-dma.yaml
Bindings/dma/snps,dw-axi-dmac.yaml
Bindings/dma/xilinx/xlnx,zynqmp-dma-1.0.yaml
Bindings/dsp/fsl,dsp.yaml
Bindings/dts-coding-style.rst
Bindings/edac/altr,socfpga-ecc-manager.yaml [new file with mode: 0644]
Bindings/edac/socfpga-eccmgr.txt [deleted file]
Bindings/eeprom/at24.yaml
Bindings/firmware/fsl,scu.yaml
Bindings/firmware/google,gs101-acpm-ipc.yaml [new file with mode: 0644]
Bindings/firmware/thead,th1520-aon.yaml [new file with mode: 0644]
Bindings/fsi/ibm,p9-scom.yaml
Bindings/gpio/aspeed,ast2400-gpio.yaml
Bindings/gpio/gpio-mvebu.yaml
Bindings/gpio/gpio-vf610.yaml
Bindings/gpio/loongson,ls-gpio.yaml
Bindings/gpio/nxp,pcf8575.yaml
Bindings/gpio/xlnx,zynqmp-gpio-modepin.yaml
Bindings/gpu/arm,mali-bifrost.yaml
Bindings/gpu/arm,mali-midgard.yaml
Bindings/hwinfo/samsung,exynos-chipid.yaml
Bindings/hwmon/adi,ad741x.yaml
Bindings/hwmon/adi,adm1275.yaml
Bindings/hwmon/adi,ltc2991.yaml
Bindings/hwmon/gpio-fan.yaml
Bindings/hwmon/lltc,ltc2978.yaml
Bindings/hwmon/maxim,max20730.yaml
Bindings/hwmon/maxim,max6639.yaml
Bindings/hwmon/maxim,max6650.yaml
Bindings/hwmon/microchip,emc2305.yaml [new file with mode: 0644]
Bindings/hwmon/national,lm90.yaml
Bindings/hwmon/ntc-thermistor.yaml
Bindings/hwmon/nuvoton,nct6775.yaml
Bindings/hwmon/nuvoton,nct7363.yaml
Bindings/hwmon/nuvoton,nct7802.yaml
Bindings/hwmon/pmbus/ti,ucd90320.yaml
Bindings/hwmon/ti,adc128d818.yaml
Bindings/hwmon/ti,ads7828.yaml
Bindings/hwmon/ti,ina2xx.yaml
Bindings/hwmon/ti,lm87.yaml
Bindings/hwmon/ti,tmp513.yaml
Bindings/hwmon/ti,tps23861.yaml
Bindings/hwmon/winbond,w83781d.yaml
Bindings/i2c/i2c-exynos5.yaml
Bindings/i2c/i2c-imx-lpi2c.yaml
Bindings/i2c/i2c-rk3x.yaml
Bindings/i2c/qcom,i2c-qup.yaml
Bindings/i2c/samsung,s3c2410-i2c.yaml
Bindings/i2c/snps,designware-i2c.yaml
Bindings/i2c/spacemit,k1-i2c.yaml [new file with mode: 0644]
Bindings/i2c/ti,omap4-i2c.yaml
Bindings/i3c/silvaco,i3c-master.yaml
Bindings/i3c/snps,dw-i3c-master.yaml
Bindings/iio/adc/adi,ad4030.yaml [new file with mode: 0644]
Bindings/iio/adc/adi,ad4695.yaml
Bindings/iio/adc/adi,ad4851.yaml [new file with mode: 0644]
Bindings/iio/adc/adi,ad7191.yaml [new file with mode: 0644]
Bindings/iio/adc/adi,ad7380.yaml
Bindings/iio/adc/adi,axi-adc.yaml
Bindings/iio/adc/nxp,imx93-adc.yaml
Bindings/iio/adc/rockchip-saradc.yaml
Bindings/iio/adc/ti,ads7138.yaml [new file with mode: 0644]
Bindings/iio/adc/xlnx,zynqmp-ams.yaml
Bindings/iio/dac/adi,ad5380.yaml
Bindings/iio/frequency/adf4371.yaml
Bindings/iio/humidity/sciosense,ens210.yaml
Bindings/iio/imu/adi,adis16550.yaml [new file with mode: 0644]
Bindings/iio/light/brcm,apds9160.yaml [new file with mode: 0644]
Bindings/iio/light/dynaimage,al3010.yaml
Bindings/iio/magnetometer/silabs,si7210.yaml [new file with mode: 0644]
Bindings/iio/temperature/maxim,max31865.yaml
Bindings/iio/temperature/ti,tmp117.yaml
Bindings/input/gpio-matrix-keypad.txt [deleted file]
Bindings/input/gpio-matrix-keypad.yaml [new file with mode: 0644]
Bindings/input/mediatek,mt6779-keypad.yaml
Bindings/input/qcom,pm8921-keypad.yaml
Bindings/input/qcom,pm8921-pwrkey.yaml
Bindings/input/touchscreen/apple,z2-multitouch.yaml [new file with mode: 0644]
Bindings/input/touchscreen/goodix,gt9916.yaml
Bindings/input/touchscreen/ti,ads7843.yaml
Bindings/interrupt-controller/allwinner,sun7i-a20-sc-nmi.yaml
Bindings/interrupt-controller/amlogic,meson-gpio-intc.yaml
Bindings/interrupt-controller/brcm,bcm2712-msix.yaml [new file with mode: 0644]
Bindings/interrupt-controller/fsl,irqsteer.yaml
Bindings/interrupt-controller/nxp,lpc3220-mic.txt [deleted file]
Bindings/interrupt-controller/nxp,lpc3220-mic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/renesas,rzv2h-icu.yaml
Bindings/interrupt-controller/riscv,aplic.yaml
Bindings/interrupt-controller/sophgo,sg2042-msi.yaml [new file with mode: 0644]
Bindings/iommu/arm,smmu.yaml
Bindings/iommu/qcom,iommu.yaml
Bindings/leds/backlight/apple,dwi-bl.yaml [new file with mode: 0644]
Bindings/leds/leds-qcom-lpg.yaml
Bindings/leds/leds-tlc591xx.txt [deleted file]
Bindings/leds/ti,tlc59116.yaml [new file with mode: 0644]
Bindings/mailbox/fsl,mu.yaml
Bindings/mailbox/mediatek,gce-mailbox.yaml
Bindings/mailbox/qcom,apcs-kpss-global.yaml
Bindings/media/aspeed,video-engine.yaml [new file with mode: 0644]
Bindings/media/aspeed-video.txt [deleted file]
Bindings/media/i2c/adv7180.yaml
Bindings/media/i2c/st,st-mipid02.yaml
Bindings/media/mediatek,vcodec-encoder.yaml
Bindings/media/mediatek,vcodec-subdev-decoder.yaml
Bindings/media/mediatek-jpeg-decoder.yaml
Bindings/media/mediatek-jpeg-encoder.yaml
Bindings/media/qcom,sc7280-camss.yaml
Bindings/media/qcom,sdm670-camss.yaml [new file with mode: 0644]
Bindings/media/qcom,sm8550-camss.yaml [new file with mode: 0644]
Bindings/media/qcom,sm8550-iris.yaml [new file with mode: 0644]
Bindings/media/snps,dw-hdmi-rx.yaml [new file with mode: 0644]
Bindings/media/st,stm32mp25-csi.yaml
Bindings/memory-controllers/exynos-srom.yaml
Bindings/memory-controllers/mc-peripheral-props.yaml
Bindings/memory-controllers/qcom,ebi2-peripheral-props.yaml [new file with mode: 0644]
Bindings/memory-controllers/qcom,ebi2.yaml [moved from Bindings/bus/qcom,ebi2.yaml with 63% similarity]
Bindings/memory-controllers/samsung,exynos4210-srom-peripheral-props.yaml [new file with mode: 0644]
Bindings/mfd/aspeed-lpc.yaml
Bindings/mfd/atmel,sama5d2-flexcom.yaml
Bindings/mfd/fsl,mcu-mpc8349emitx.yaml [new file with mode: 0644]
Bindings/mfd/maxim,max77705.yaml [new file with mode: 0644]
Bindings/mfd/motorola-cpcap.txt
Bindings/mfd/qcom,tcsr.yaml
Bindings/mfd/samsung,s2mps11.yaml
Bindings/mfd/st,stm32-timers.yaml
Bindings/mfd/syscon.yaml
Bindings/mips/mti,mips-cm.yaml [new file with mode: 0644]
Bindings/misc/atmel-ssc.txt [deleted file]
Bindings/mmc/allwinner,sun4i-a10-mmc.yaml
Bindings/mmc/amlogic,meson-mx-sdio.yaml
Bindings/mmc/atmel,hsmci.yaml [new file with mode: 0644]
Bindings/mmc/atmel-hsmci.txt [deleted file]
Bindings/mmc/fsl-imx-esdhc.yaml
Bindings/mmc/mmc-controller.yaml
Bindings/mmc/mmc-slot.yaml
Bindings/mmc/renesas,sdhi.yaml
Bindings/mmc/rockchip-dw-mshc.yaml
Bindings/mmc/samsung,exynos-dw-mshc.yaml
Bindings/mmc/snps,dwcmshc-sdhci.yaml
Bindings/mtd/arasan,nand-controller.yaml
Bindings/mtd/atmel,dataflash.yaml [new file with mode: 0644]
Bindings/mtd/atmel-dataflash.txt [deleted file]
Bindings/mtd/gpmi-nand.yaml
Bindings/mtd/mtd-physmap.yaml
Bindings/mtd/mxc-nand.yaml
Bindings/net/airoha,en7581-eth.yaml
Bindings/net/airoha,en7581-npu.yaml [new file with mode: 0644]
Bindings/net/amlogic,meson-dwmac.yaml
Bindings/net/bluetooth/nxp,88w8987-bt.yaml
Bindings/net/bluetooth/qualcomm-bluetooth.yaml
Bindings/net/can/fsl,flexcan.yaml
Bindings/net/can/microchip,mcp2510.yaml
Bindings/net/can/microchip,mcp251xfd.yaml
Bindings/net/cdns,macb.yaml
Bindings/net/dsa/brcm,b53.yaml
Bindings/net/ethernet-controller.yaml
Bindings/net/ethernet-phy.yaml
Bindings/net/faraday,ftgmac100.yaml
Bindings/net/fsl,gianfar-mdio.yaml [new file with mode: 0644]
Bindings/net/fsl,gianfar.yaml [new file with mode: 0644]
Bindings/net/fsl-tsec-phy.txt
Bindings/net/ieee802154/ca8210.txt
Bindings/net/intel,dwmac-plat.yaml
Bindings/net/mediatek-dwmac.yaml
Bindings/net/nxp,dwmac-imx.yaml
Bindings/net/qcom,ipa.yaml
Bindings/net/realtek,rtl9301-mdio.yaml [new file with mode: 0644]
Bindings/net/realtek,rtl9301-switch.yaml [moved from Bindings/mfd/realtek,rtl9301-switch.yaml with 66% similarity]
Bindings/net/rfkill-gpio.yaml
Bindings/net/rockchip-dwmac.yaml
Bindings/net/smsc,lan9115.yaml
Bindings/net/snps,dwmac.yaml
Bindings/net/sophgo,sg2044-dwmac.yaml [new file with mode: 0644]
Bindings/net/stm32-dwmac.yaml
Bindings/net/tesla,fsd-ethqos.yaml [new file with mode: 0644]
Bindings/net/toshiba,visconti-dwmac.yaml
Bindings/net/wireless/qcom,ath10k.yaml
Bindings/net/wireless/qcom,ath11k-pci.yaml
Bindings/net/wireless/qcom,ath11k.yaml
Bindings/net/wireless/qcom,ath12k-wsi.yaml
Bindings/nvmem/layouts/fixed-cell.yaml
Bindings/nvmem/qcom,qfprom.yaml
Bindings/nvmem/rockchip,otp.yaml
Bindings/pci/altr,pcie-root-port.yaml
Bindings/pci/amd,versal2-mdb-host.yaml [new file with mode: 0644]
Bindings/pci/brcm,stb-pcie.yaml
Bindings/pci/fsl,imx6q-pcie.yaml
Bindings/pci/fsl,layerscape-pcie-ep.yaml
Bindings/pci/fsl,mpc8xxx-pci.yaml [new file with mode: 0644]
Bindings/pci/fsl,pci.txt [deleted file]
Bindings/pci/mediatek-pcie-gen3.yaml
Bindings/pci/pci-ep-bus.yaml [new file with mode: 0644]
Bindings/pci/qcom,pcie-ep.yaml
Bindings/pci/qcom,pcie.yaml
Bindings/pci/snps,dw-pcie.yaml
Bindings/pci/xilinx-versal-cpm.yaml
Bindings/phy/allwinner,sun50i-a64-usb-phy.yaml
Bindings/phy/phy-rockchip-naneng-combphy.yaml
Bindings/phy/qcom,ipq5332-uniphy-pcie-phy.yaml [new file with mode: 0644]
Bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml
Bindings/phy/qcom,sc8280xp-qmp-ufs-phy.yaml
Bindings/phy/rockchip,rk3588-hdptx-phy.yaml
Bindings/phy/rockchip,rk3588-mipi-dcphy.yaml [new file with mode: 0644]
Bindings/phy/samsung,ufs-phy.yaml
Bindings/phy/samsung,usb3-drd-phy.yaml
Bindings/pinctrl/airoha,en7581-pinctrl.yaml
Bindings/pinctrl/allwinner,sun55i-a523-pinctrl.yaml [new file with mode: 0644]
Bindings/pinctrl/amlogic,pinctrl-a4.yaml [new file with mode: 0644]
Bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
Bindings/pinctrl/brcm,bcm21664-pinctrl.yaml [new file with mode: 0644]
Bindings/pinctrl/ingenic,pinctrl.yaml
Bindings/pinctrl/qcom,sa8775p-tlmm.yaml
Bindings/pinctrl/rockchip,pinctrl.yaml
Bindings/pinctrl/samsung,pinctrl-wakeup-interrupt.yaml
Bindings/pinctrl/samsung,pinctrl.yaml
Bindings/pinctrl/sophgo,sg2042-pinctrl.yaml [new file with mode: 0644]
Bindings/platform/huawei,gaokun-ec.yaml [new file with mode: 0644]
Bindings/power/allwinner,sun20i-d1-ppu.yaml
Bindings/power/apple,pmgr-pwrstate.yaml
Bindings/power/qcom,kpss-acc-v2.yaml
Bindings/power/reset/atmel,sama5d2-shdwc.yaml
Bindings/power/reset/xlnx,zynqmp-power.yaml
Bindings/power/rockchip,power-controller.yaml
Bindings/power/supply/maxim,max77705.yaml [new file with mode: 0644]
Bindings/power/supply/x-powers,axp20x-battery-power-supply.yaml
Bindings/power/wakeup-source.txt
Bindings/powerpc/fsl/dma.txt [deleted file]
Bindings/powerpc/fsl/mcu-mpc8349emitx.txt [deleted file]
Bindings/pps/pps-gpio.yaml
Bindings/pwm/imx-tpm-pwm.yaml
Bindings/pwm/pwm-nexus-node.yaml [new file with mode: 0644]
Bindings/pwm/pwm-rockchip.yaml
Bindings/pwm/renesas,tpu-pwm.yaml
Bindings/pwm/sophgo,sg2042-pwm.yaml [new file with mode: 0644]
Bindings/regulator/nxp,pca9450-regulator.yaml
Bindings/regulator/richtek,rtq2208.yaml
Bindings/regulator/samsung,s2mpu05.yaml [new file with mode: 0644]
Bindings/regulator/ti,tps65219.yaml
Bindings/remoteproc/qcom,msm8916-mss-pil.yaml
Bindings/remoteproc/qcom,sc8180x-pas.yaml [deleted file]
Bindings/remoteproc/qcom,sm6115-pas.yaml
Bindings/remoteproc/qcom,sm8150-pas.yaml
Bindings/remoteproc/qcom,sm8550-pas.yaml
Bindings/remoteproc/qcom,wcnss-pil.yaml
Bindings/reset/atmel,at91sam9260-reset.yaml
Bindings/reset/xlnx,zynqmp-reset.yaml
Bindings/riscv/extensions.yaml
Bindings/riscv/spacemit.yaml
Bindings/rng/rockchip,rk3588-rng.yaml [new file with mode: 0644]
Bindings/rtc/adi,max31335.yaml
Bindings/rtc/nxp,pcf2127.yaml
Bindings/rtc/qcom-pm8xxx-rtc.yaml
Bindings/serial/8250.yaml
Bindings/serial/fsl-lpuart.yaml
Bindings/serial/nvidia,tegra264-utc.yaml [new file with mode: 0644]
Bindings/serial/pl011.yaml
Bindings/serial/samsung_uart.yaml
Bindings/serial/snps-dw-apb-uart.yaml
Bindings/serial/sprd-uart.yaml
Bindings/soc/fsl/fsl,ls1028a-reset.yaml
Bindings/soc/imx/fsl,aips-bus.yaml
Bindings/soc/qcom/qcom,geni-se.yaml
Bindings/soc/qcom/qcom,pmic-glink.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/samsung/exynos-usi.yaml
Bindings/soc/samsung/samsung,exynos-sysreg.yaml
Bindings/soc/xilinx/xilinx.yaml
Bindings/sound/allwinner,sun4i-a10-codec.yaml
Bindings/sound/atmel,at91-ssc.yaml [new file with mode: 0644]
Bindings/sound/atmel,at91sam9g20ek-wm8731.yaml [new file with mode: 0644]
Bindings/sound/atmel-at91sam9g20ek-wm8731-audio.txt [deleted file]
Bindings/sound/audio-graph-card2.yaml
Bindings/sound/awinic,aw88395.yaml
Bindings/sound/dmic-codec.yaml
Bindings/sound/everest,es8328.yaml
Bindings/sound/fsl,audmix.yaml
Bindings/sound/fsl,easrc.yaml
Bindings/sound/fsl,imx-asrc.yaml
Bindings/sound/fsl,imx95-cm7-sof.yaml [new file with mode: 0644]
Bindings/sound/fsl,sai.yaml
Bindings/sound/fsl,sof-cpu.yaml [new file with mode: 0644]
Bindings/sound/ics43432.txt [deleted file]
Bindings/sound/imx-audio-card.yaml
Bindings/sound/invensense,ics43432.yaml [new file with mode: 0644]
Bindings/sound/mediatek,mt8188-mt6359.yaml
Bindings/sound/nvidia,tegra30-hda.yaml
Bindings/sound/qcom,wcd937x-sdw.yaml
Bindings/sound/rockchip-spdif.yaml
Bindings/sound/ti,tas2770.yaml
Bindings/sound/ti,tas27xx.yaml
Bindings/sound/wlf,wm8904.yaml
Bindings/sound/wlf,wm8960.yaml
Bindings/sound/xlnx,audio-formatter.txt [deleted file]
Bindings/sound/xlnx,audio-formatter.yaml [new file with mode: 0644]
Bindings/sound/xlnx,i2s.txt [deleted file]
Bindings/sound/xlnx,i2s.yaml [new file with mode: 0644]
Bindings/sound/xlnx,spdif.txt [deleted file]
Bindings/sound/xlnx,spdif.yaml [new file with mode: 0644]
Bindings/spi/adi,axi-spi-engine.yaml
Bindings/spi/cdns,qspi-nor.yaml
Bindings/spi/fsl,espi.yaml [new file with mode: 0644]
Bindings/spi/fsl,spi.yaml [new file with mode: 0644]
Bindings/spi/fsl-spi.txt [deleted file]
Bindings/spi/mediatek,spi-mt65xx.yaml
Bindings/spi/qcom,spi-qpic-snand.yaml [new file with mode: 0644]
Bindings/spi/snps,dw-apb-ssi.yaml
Bindings/spi/spi-fsl-lpspi.yaml
Bindings/spi/spi-rockchip.yaml
Bindings/spi/spi-sg2044-nor.yaml [new file with mode: 0644]
Bindings/spi/spi-zynqmp-qspi.yaml
Bindings/spi/st,stm32mp25-ospi.yaml [new file with mode: 0644]
Bindings/submitting-patches.rst
Bindings/thermal/allwinner,sun8i-a83t-ths.yaml
Bindings/thermal/brcm,avs-tmon.yaml
Bindings/thermal/imx-thermal.yaml
Bindings/thermal/imx8mm-thermal.yaml
Bindings/thermal/qcom-tsens.yaml
Bindings/thermal/thermal-zones.yaml
Bindings/timer/arm,twd-timer.yaml
Bindings/timer/nxp,sysctr-timer.yaml
Bindings/timer/renesas,cmt.yaml
Bindings/timer/renesas,em-sti.yaml
Bindings/timer/renesas,mtu2.yaml
Bindings/timer/renesas,ostm.yaml
Bindings/timer/renesas,tmu.yaml
Bindings/timer/renesas,tpu.yaml [deleted file]
Bindings/timer/samsung,exynos4210-mct.yaml
Bindings/timer/sifive,clint.yaml
Bindings/trigger-source/pwm-trigger.yaml [new file with mode: 0644]
Bindings/trivial-devices.yaml
Bindings/ufs/renesas,ufs.yaml
Bindings/ufs/rockchip,rk3576-ufshc.yaml [new file with mode: 0644]
Bindings/usb/dwc3-xilinx.yaml
Bindings/usb/generic-xhci.yaml
Bindings/usb/mediatek,mtk-xhci.yaml
Bindings/usb/mediatek,mtu3.yaml
Bindings/usb/microchip,usb2514.yaml
Bindings/usb/microchip,usb5744.yaml
Bindings/usb/parade,ps8830.yaml [new file with mode: 0644]
Bindings/usb/qcom,dwc3.yaml
Bindings/usb/richtek,rt1711h.yaml
Bindings/usb/rockchip,dwc3.yaml
Bindings/usb/samsung,exynos-dwc3.yaml
Bindings/usb/snps,dwc3-common.yaml
Bindings/usb/usb-device.yaml
Bindings/usb/xlnx,usb2.yaml
Bindings/vendor-prefixes.yaml
Bindings/watchdog/allwinner,sun4i-a10-wdt.yaml
Bindings/watchdog/fsl-imx7ulp-wdt.yaml
Bindings/watchdog/renesas,wdt.yaml
Bindings/xilinx.txt
include/dt-bindings/clock/mediatek,mt8188-clk.h
include/dt-bindings/clock/mediatek,mtmips-sysc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,dsi-phy-28nm.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,gcc-sdm660.h
include/dt-bindings/clock/qcom,ipq9574-gcc.h
include/dt-bindings/clock/qcom,ipq9574-nsscc.h [new file with mode: 0644]
include/dt-bindings/clock/qcom,rpmcc.h
include/dt-bindings/clock/rk3188-cru-common.h
include/dt-bindings/clock/rockchip,rk3528-cru.h [new file with mode: 0644]
include/dt-bindings/clock/rockchip,rk3562-cru.h [new file with mode: 0644]
include/dt-bindings/clock/rockchip,rk3576-cru.h
include/dt-bindings/clock/samsung,exynos2200-cmu.h [new file with mode: 0644]
include/dt-bindings/clock/samsung,exynos7870-cmu.h [new file with mode: 0644]
include/dt-bindings/clock/samsung,exynos990.h
include/dt-bindings/clock/sun50i-h616-ccu.h
include/dt-bindings/clock/sun55i-a523-ccu.h [new file with mode: 0644]
include/dt-bindings/clock/sun55i-a523-r-ccu.h [new file with mode: 0644]
include/dt-bindings/clock/xlnx-zynqmp-clk.h
include/dt-bindings/iio/adc/adi,ad4695.h
include/dt-bindings/pinctrl/amlogic,pinctrl.h [new file with mode: 0644]
include/dt-bindings/pinctrl/pinctrl-sg2042.h [new file with mode: 0644]
include/dt-bindings/pinctrl/pinctrl-sg2044.h [new file with mode: 0644]
include/dt-bindings/power/allwinner,sun8i-v853-ppu.h [new file with mode: 0644]
include/dt-bindings/power/qcom-rpmpd.h
include/dt-bindings/power/thead,th1520-power.h [new file with mode: 0644]
include/dt-bindings/reset/imx8mp-reset-audiomix.h [new file with mode: 0644]
include/dt-bindings/reset/qcom,ipq9574-nsscc.h [new file with mode: 0644]
include/dt-bindings/reset/rockchip,rk3528-cru.h [new file with mode: 0644]
include/dt-bindings/reset/rockchip,rk3562-cru.h [new file with mode: 0644]
include/dt-bindings/reset/rockchip,rk3588-cru.h
include/dt-bindings/reset/sun50i-h616-ccu.h
include/dt-bindings/reset/sun55i-a523-ccu.h [new file with mode: 0644]
include/dt-bindings/reset/sun55i-a523-r-ccu.h [new file with mode: 0644]
include/dt-bindings/soc/samsung,exynos-usi.h
include/dt-bindings/sound/qcom,wcd934x.h [new file with mode: 0644]
src/arm/allwinner/sun8i-v3s-netcube-kumquat.dts [new file with mode: 0644]
src/arm/allwinner/sun8i-v3s.dtsi
src/arm/amlogic/meson8.dtsi
src/arm/amlogic/meson8b-ec100.dts
src/arm/amlogic/meson8b-mxq.dts
src/arm/amlogic/meson8b-odroidc1.dts
src/arm/amlogic/meson8b.dtsi
src/arm/cirrus/ep7211-edb7211.dts
src/arm/intel/ixp/intel-ixp42x-netgear-wg302v1.dts
src/arm/intel/ixp/intel-ixp4xx.dtsi
src/arm/marvell/armada-385-clearfog-gtr.dtsi
src/arm/marvell/armada-388-clearfog-base.dts
src/arm/marvell/kirkwood-openrd.dtsi
src/arm/microchip/aks-cdu.dts
src/arm/microchip/animeo_ip.dts
src/arm/microchip/at91-foxg20.dts
src/arm/microchip/at91-qil_a9260.dts
src/arm/microchip/at91-sam9_l9260.dts
src/arm/microchip/at91-sama5d27_som1_ek.dts
src/arm/microchip/at91-sama5d2_ptc_ek.dts
src/arm/microchip/at91-sama5d2_xplained.dts
src/arm/microchip/at91-sama5d3_xplained.dts
src/arm/microchip/at91-sama5d4_ma5d4evk.dts
src/arm/microchip/at91-sama5d4_xplained.dts
src/arm/microchip/at91-sama5d4ek.dts
src/arm/microchip/at91-sama7d65_curiosity.dts
src/arm/microchip/at91-sama7g5ek.dts
src/arm/microchip/at91-vinco.dts
src/arm/microchip/at91rm9200.dtsi
src/arm/microchip/at91rm9200ek.dts
src/arm/microchip/at91sam9260.dtsi
src/arm/microchip/at91sam9260ek.dts
src/arm/microchip/at91sam9261.dtsi
src/arm/microchip/at91sam9261ek.dts
src/arm/microchip/at91sam9263.dtsi
src/arm/microchip/at91sam9263ek.dts
src/arm/microchip/at91sam9g20ek_common.dtsi
src/arm/microchip/at91sam9g45.dtsi
src/arm/microchip/at91sam9m10g45ek.dts
src/arm/microchip/at91sam9n12.dtsi
src/arm/microchip/at91sam9n12ek.dts
src/arm/microchip/at91sam9x5.dtsi
src/arm/microchip/ethernut5.dts
src/arm/microchip/evk-pro3.dts
src/arm/microchip/mpa1600.dts
src/arm/microchip/pm9g45.dts
src/arm/microchip/sam9x60.dtsi
src/arm/microchip/sama5d2.dtsi
src/arm/microchip/sama5d3.dtsi
src/arm/microchip/sama5d3xmb.dtsi
src/arm/microchip/sama5d4.dtsi
src/arm/microchip/sama7d65.dtsi
src/arm/microchip/tny_a9260.dts
src/arm/microchip/tny_a9260_common.dtsi
src/arm/microchip/tny_a9263.dts
src/arm/microchip/tny_a9g20.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-dab-mmx.dtsi
src/arm/microchip/usb_a9g20.dts
src/arm/microchip/usb_a9g20_common.dtsi
src/arm/microchip/usb_a9g20_lpw.dts
src/arm/nvidia/tegra114.dtsi
src/arm/nvidia/tegra124.dtsi
src/arm/nvidia/tegra20-asus-tf101.dts
src/arm/nxp/imx/imx31.dtsi
src/arm/nxp/imx/imx50.dtsi
src/arm/nxp/imx/imx51.dtsi
src/arm/nxp/imx/imx53-mba53.dts
src/arm/nxp/imx/imx53-ppd.dts
src/arm/nxp/imx/imx53.dtsi
src/arm/nxp/imx/imx6dl-colibri-v1.2-aster.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6dl-colibri-v1.2-eval-v3.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6dl-colibri-v1.2-iris-v2.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6dl-colibri-v1.2-iris.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6q-apalis-v1.2-eval-v1.2.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6q-apalis-v1.2-eval.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6q-apalis-v1.2-ixora-v1.1.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6q-apalis-v1.2-ixora-v1.2.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6q-apalis-v1.2-ixora.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6qdl-apalis-v1.2.dtsi [new file with mode: 0644]
src/arm/nxp/imx/imx6qdl-apalis.dtsi
src/arm/nxp/imx/imx6qdl-colibri-v1.2.dtsi [new file with mode: 0644]
src/arm/nxp/imx/imx6qdl-colibri.dtsi
src/arm/nxp/imx/imx6qdl-mba6.dtsi
src/arm/nxp/imx/imx6qdl-tqma6.dtsi
src/arm/nxp/imx/imx6qdl-tqma6a.dtsi
src/arm/nxp/imx/imx6qdl-tqma6b.dtsi
src/arm/nxp/imx/imx6ul-14x14-evk.dtsi
src/arm/nxp/imx/imx6ul-imx6ull-opos6ul.dtsi
src/arm/nxp/imx/imx6ul-tqma6ul-common.dtsi
src/arm/nxp/imx/imx6ul-tqma6ul1-mba6ulx.dts
src/arm/nxp/imx/imx6ul-tqma6ul1.dtsi
src/arm/nxp/imx/imx6ul-var-som-concerto.dts [new file with mode: 0644]
src/arm/nxp/imx/imx6ul-var-som.dtsi [new file with mode: 0644]
src/arm/nxp/imx/imx7-mba7.dtsi
src/arm/nxp/imx/imx7-tqma7.dtsi
src/arm/nxp/imx/imx7d-sdb.dts
src/arm/nxp/imx/imx7s.dtsi
src/arm/nxp/imx/mba6ulx.dtsi
src/arm/nxp/mxs/imx28-btt3-0.dts [new file with mode: 0644]
src/arm/nxp/mxs/imx28-btt3-1.dts [new file with mode: 0644]
src/arm/nxp/mxs/imx28-btt3-2.dts [new file with mode: 0644]
src/arm/nxp/mxs/imx28-btt3.dtsi [new file with mode: 0644]
src/arm/nxp/mxs/imx28-sps1.dts
src/arm/nxp/vf/vf610-bk4.dts
src/arm/nxp/vf/vf610-colibri.dtsi
src/arm/nxp/vf/vf610-zii-dev-rev-c.dts
src/arm/nxp/vf/vfxxx.dtsi
src/arm/renesas/r8a7790-lager.dts
src/arm/renesas/r8a7790-stout.dts
src/arm/renesas/r8a7790.dtsi
src/arm/renesas/r8a7791-koelsch.dts
src/arm/renesas/r8a7791-porter.dts
src/arm/renesas/r8a7791.dtsi
src/arm/renesas/r8a7792-blanche.dts
src/arm/renesas/r8a7792-wheat.dts
src/arm/renesas/r8a7792.dtsi
src/arm/renesas/r8a7793-gose.dts
src/arm/renesas/r8a7793.dtsi
src/arm/renesas/r8a7794-alt.dts
src/arm/renesas/r8a7794-silk.dts
src/arm/renesas/r8a7794.dtsi
src/arm/renesas/r9a06g032.dtsi
src/arm/st/stm32f746-disco.dts
src/arm/st/stm32f769-disco.dts
src/arm/st/stm32mp131.dtsi
src/arm/st/stm32mp133c-prihmb.dts [new file with mode: 0644]
src/arm/st/stm32mp135f-dhcor-dhsbc.dts
src/arm/st/stm32mp15-pinctrl.dtsi
src/arm/st/stm32mp151.dtsi
src/arm/st/stm32mp151c-plyaqm.dts [new file with mode: 0644]
src/arm/st/stm32mp153c-lxa-fairytux2-gen1.dts [new file with mode: 0644]
src/arm/st/stm32mp153c-lxa-fairytux2-gen2.dts [new file with mode: 0644]
src/arm/st/stm32mp153c-lxa-fairytux2.dtsi [new file with mode: 0644]
src/arm/st/stm32mp157c-dk2.dts
src/arm/ti/davinci/da850-lego-ev3.dts
src/arm/ti/omap/omap3-evm-processor-common.dtsi
src/arm/ti/omap/omap4-l4.dtsi
src/arm/ti/omap/omap4-panda-a4.dts
src/arm/xilinx/zynq-7000.dtsi
src/arm/xilinx/zynq-cc108.dts
src/arm/xilinx/zynq-ebaz4205.dts
src/arm/xilinx/zynq-microzed.dts
src/arm/xilinx/zynq-parallella.dts
src/arm/xilinx/zynq-zc702.dts
src/arm/xilinx/zynq-zc706.dts
src/arm/xilinx/zynq-zc770-xm010.dts
src/arm/xilinx/zynq-zc770-xm011.dts
src/arm/xilinx/zynq-zc770-xm012.dts
src/arm/xilinx/zynq-zc770-xm013.dts
src/arm/xilinx/zynq-zed.dts
src/arm/xilinx/zynq-zturn-common.dtsi
src/arm/xilinx/zynq-zybo-z7.dts
src/arm/xilinx/zynq-zybo.dts
src/arm64/airoha/en7581-evb.dts
src/arm64/airoha/en7581.dtsi
src/arm64/allwinner/sun50i-a100-allwinner-perf1.dts
src/arm64/allwinner/sun50i-a100-cpu-opp.dtsi [new file with mode: 0644]
src/arm64/allwinner/sun50i-a100.dtsi
src/arm64/allwinner/sun50i-h6-beelink-gs1.dts
src/arm64/allwinner/sun50i-h6-orangepi-3.dts
src/arm64/allwinner/sun50i-h6-orangepi.dtsi
src/arm64/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
src/arm64/allwinner/sun50i-h700-anbernic-rg35xx-h.dts
src/arm64/amazon/alpine-v2.dtsi
src/arm64/amazon/alpine-v3.dtsi
src/arm64/amd/amd-overdrive-rev-b0.dts
src/arm64/amd/amd-overdrive-rev-b1.dts
src/arm64/amd/amd-seattle-clks.dtsi
src/arm64/amd/amd-seattle-soc.dtsi
src/arm64/amd/amd-seattle-xgbe-b.dtsi
src/arm64/amlogic/amlogic-a4.dtsi
src/arm64/amlogic/amlogic-a5.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-g12b-a311d-libretech-cc.dts
src/arm64/amlogic/meson-g12b-bananapi-cm4.dtsi
src/arm64/amlogic/meson-g12b-bananapi.dtsi
src/arm64/amlogic/meson-g12b-dreambox.dtsi
src/arm64/amlogic/meson-g12b-khadas-vim3.dtsi
src/arm64/amlogic/meson-g12b-odroid.dtsi
src/arm64/amlogic/meson-g12b-radxa-zero2.dts
src/arm64/amlogic/meson-g12b-w400.dtsi
src/arm64/amlogic/meson-gx-libretech-pc.dtsi
src/arm64/amlogic/meson-gx-p23x-q20x.dtsi
src/arm64/amlogic/meson-gx.dtsi
src/arm64/amlogic/meson-gxbb-nanopi-k2.dts
src/arm64/amlogic/meson-gxbb-nexbox-a95x.dts
src/arm64/amlogic/meson-gxbb-p20x.dtsi
src/arm64/amlogic/meson-gxbb-vega-s95.dtsi
src/arm64/amlogic/meson-gxbb-wetek.dtsi
src/arm64/amlogic/meson-gxbb.dtsi
src/arm64/amlogic/meson-gxl-s805x-p241.dts
src/arm64/amlogic/meson-gxl-s905w-jethome-jethub-j80.dts
src/arm64/amlogic/meson-gxl-s905x-hwacom-amazetv.dts
src/arm64/amlogic/meson-gxl-s905x-khadas-vim.dts
src/arm64/amlogic/meson-gxl-s905x-nexbox-a95x.dts
src/arm64/amlogic/meson-gxl-s905x-p212.dtsi
src/arm64/amlogic/meson-gxl.dtsi
src/arm64/amlogic/meson-gxm-khadas-vim2.dts
src/arm64/amlogic/meson-gxm-rbox-pro.dts
src/arm64/amlogic/meson-libretech-cottonwood.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-sei610.dts
src/arm64/apple/s5l8960x-5s.dtsi
src/arm64/apple/s5l8960x-air1.dtsi
src/arm64/apple/s5l8960x-mini2.dtsi
src/arm64/apple/s5l8960x-opp.dtsi [new file with mode: 0644]
src/arm64/apple/s5l8960x-pmgr.dtsi [new file with mode: 0644]
src/arm64/apple/s5l8960x.dtsi
src/arm64/apple/s5l8965x-opp.dtsi [new file with mode: 0644]
src/arm64/apple/s800-0-3-common.dtsi
src/arm64/apple/s800-0-3-pmgr.dtsi [new file with mode: 0644]
src/arm64/apple/s800-0-3.dtsi [new file with mode: 0644]
src/arm64/apple/s8000.dtsi
src/arm64/apple/s8001-common.dtsi
src/arm64/apple/s8001-j98a-j99a.dtsi [new file with mode: 0644]
src/arm64/apple/s8001-j98a.dts
src/arm64/apple/s8001-j99a.dts
src/arm64/apple/s8001-pmgr.dtsi [new file with mode: 0644]
src/arm64/apple/s8001.dtsi
src/arm64/apple/s8003.dtsi
src/arm64/apple/s800x-6s.dtsi
src/arm64/apple/s800x-ipad5.dtsi
src/arm64/apple/s800x-se.dtsi
src/arm64/apple/spi1-nvram.dtsi [new file with mode: 0644]
src/arm64/apple/t600x-common.dtsi
src/arm64/apple/t600x-die0.dtsi
src/arm64/apple/t600x-gpio-pins.dtsi
src/arm64/apple/t600x-j314-j316.dtsi
src/arm64/apple/t600x-j375.dtsi
src/arm64/apple/t7000-6.dtsi
src/arm64/apple/t7000-handheld.dtsi
src/arm64/apple/t7000-j42d.dts
src/arm64/apple/t7000-mini4.dtsi
src/arm64/apple/t7000-n102.dts
src/arm64/apple/t7000-pmgr.dtsi [new file with mode: 0644]
src/arm64/apple/t7000.dtsi
src/arm64/apple/t7001-air2.dtsi
src/arm64/apple/t7001-pmgr.dtsi [new file with mode: 0644]
src/arm64/apple/t7001.dtsi
src/arm64/apple/t8010-7.dtsi
src/arm64/apple/t8010-common.dtsi
src/arm64/apple/t8010-ipad6.dtsi
src/arm64/apple/t8010-n112.dts
src/arm64/apple/t8010-pmgr.dtsi [new file with mode: 0644]
src/arm64/apple/t8010.dtsi
src/arm64/apple/t8011-common.dtsi
src/arm64/apple/t8011-pmgr.dtsi [new file with mode: 0644]
src/arm64/apple/t8011-pro2.dtsi
src/arm64/apple/t8011.dtsi
src/arm64/apple/t8012-j132.dts [new file with mode: 0644]
src/arm64/apple/t8012-j137.dts [new file with mode: 0644]
src/arm64/apple/t8012-j140a.dts [new file with mode: 0644]
src/arm64/apple/t8012-j140k.dts [new file with mode: 0644]
src/arm64/apple/t8012-j152f.dts [new file with mode: 0644]
src/arm64/apple/t8012-j160.dts [new file with mode: 0644]
src/arm64/apple/t8012-j174.dts [new file with mode: 0644]
src/arm64/apple/t8012-j185.dts [new file with mode: 0644]
src/arm64/apple/t8012-j185f.dts [new file with mode: 0644]
src/arm64/apple/t8012-j213.dts [new file with mode: 0644]
src/arm64/apple/t8012-j214k.dts [new file with mode: 0644]
src/arm64/apple/t8012-j215.dts [new file with mode: 0644]
src/arm64/apple/t8012-j223.dts [new file with mode: 0644]
src/arm64/apple/t8012-j230k.dts [new file with mode: 0644]
src/arm64/apple/t8012-j680.dts [new file with mode: 0644]
src/arm64/apple/t8012-j780.dts [new file with mode: 0644]
src/arm64/apple/t8012-jxxx.dtsi [new file with mode: 0644]
src/arm64/apple/t8012-pmgr.dtsi [new file with mode: 0644]
src/arm64/apple/t8012-touchbar.dtsi [new file with mode: 0644]
src/arm64/apple/t8012.dtsi [new file with mode: 0644]
src/arm64/apple/t8015-8.dtsi
src/arm64/apple/t8015-common.dtsi
src/arm64/apple/t8015-pmgr.dtsi [new file with mode: 0644]
src/arm64/apple/t8015.dtsi
src/arm64/apple/t8103-j293.dts
src/arm64/apple/t8103-jxxx.dtsi
src/arm64/apple/t8103-pmgr.dtsi
src/arm64/apple/t8103.dtsi
src/arm64/apple/t8112-j493.dts
src/arm64/apple/t8112-jxxx.dtsi
src/arm64/apple/t8112.dtsi
src/arm64/arm/corstone1000-fvp.dts
src/arm64/arm/corstone1000.dtsi
src/arm64/arm/morello-fvp.dts [new file with mode: 0644]
src/arm64/arm/morello-sdp.dts [new file with mode: 0644]
src/arm64/arm/morello.dtsi [new file with mode: 0644]
src/arm64/exynos/exynos8895-dreamlte.dts
src/arm64/exynos/exynos8895.dtsi
src/arm64/exynos/exynos990.dtsi
src/arm64/exynos/exynosautov920.dtsi
src/arm64/exynos/google/gs101-oriole.dts
src/arm64/exynos/google/gs101-pixel-common.dtsi [new file with mode: 0644]
src/arm64/exynos/google/gs101-raven.dts [new file with mode: 0644]
src/arm64/exynos/google/gs101.dtsi
src/arm64/freescale/fsl-ls1088a-ten64.dts
src/arm64/freescale/imx8-apalis-v1.1.dtsi
src/arm64/freescale/imx8-ss-hsio.dtsi
src/arm64/freescale/imx8dxl-evk.dts
src/arm64/freescale/imx8mm-kontron-bl.dts
src/arm64/freescale/imx8mm-kontron-osm-s.dtsi
src/arm64/freescale/imx8mm-phyboard-polis-peb-av-10.dtso [new file with mode: 0644]
src/arm64/freescale/imx8mm-phyboard-polis-peb-eval-01.dtso [new file with mode: 0644]
src/arm64/freescale/imx8mm-phyboard-polis-rdk.dts
src/arm64/freescale/imx8mm-phycore-no-eth.dtso [new file with mode: 0644]
src/arm64/freescale/imx8mm-phycore-no-spiflash.dtso [new file with mode: 0644]
src/arm64/freescale/imx8mm-phycore-rpmsg.dtso [new file with mode: 0644]
src/arm64/freescale/imx8mm-phycore-som.dtsi
src/arm64/freescale/imx8mm-phygate-tauri-l.dts
src/arm64/freescale/imx8mm-tqma8mqml.dtsi
src/arm64/freescale/imx8mm-verdin.dtsi
src/arm64/freescale/imx8mn-bsh-smm-s2pro.dts
src/arm64/freescale/imx8mn-tqma8mqnl.dtsi
src/arm64/freescale/imx8mp-evk.dts
src/arm64/freescale/imx8mp-kontron-osm-s.dtsi
src/arm64/freescale/imx8mp-nominal.dtsi [new file with mode: 0644]
src/arm64/freescale/imx8mp-skov-basic.dts [new file with mode: 0644]
src/arm64/freescale/imx8mp-skov-reva.dtsi
src/arm64/freescale/imx8mp-skov-revb-hdmi.dts
src/arm64/freescale/imx8mp-skov-revb-lt6.dts
src/arm64/freescale/imx8mp-skov-revb-mi1010ait-1cp1.dts
src/arm64/freescale/imx8mp-skov-revc-bd500.dts [new file with mode: 0644]
src/arm64/freescale/imx8mp-skov-revc-tian-g07017.dts [new file with mode: 0644]
src/arm64/freescale/imx8mp-tqma8mpql-mba8mpxl.dts
src/arm64/freescale/imx8mp-tqma8mpql.dtsi
src/arm64/freescale/imx8mp-var-som.dtsi
src/arm64/freescale/imx8mp.dtsi
src/arm64/freescale/imx8mq-librem5-devkit.dts
src/arm64/freescale/imx8mq-librem5.dtsi
src/arm64/freescale/imx8mq-tqma8mq.dtsi
src/arm64/freescale/imx8qm-apalis-v1.1.dtsi
src/arm64/freescale/imx8qm-apalis.dtsi
src/arm64/freescale/imx8qm-mek.dts
src/arm64/freescale/imx8qm-ss-hsio.dtsi
src/arm64/freescale/imx8qxp-mek-pcie-ep.dtso [new file with mode: 0644]
src/arm64/freescale/imx8qxp-mek.dts
src/arm64/freescale/imx8x-colibri.dtsi
src/arm64/freescale/imx93-kontron-osm-s.dtsi
src/arm64/freescale/imx93-tqma9352-mba93xxca.dts
src/arm64/freescale/imx93-tqma9352-mba93xxla.dts
src/arm64/freescale/imx93.dtsi
src/arm64/freescale/imx95-15x15-evk.dts [new file with mode: 0644]
src/arm64/freescale/imx95-19x19-evk.dts
src/arm64/freescale/imx95.dtsi
src/arm64/freescale/mba8mx.dtsi
src/arm64/freescale/mba8xx.dtsi
src/arm64/freescale/s32g2.dtsi
src/arm64/freescale/s32g274a-evb.dts
src/arm64/freescale/s32g274a-rdb2.dts
src/arm64/freescale/s32g3.dtsi
src/arm64/freescale/s32g399a-rdb3.dts
src/arm64/freescale/s32gxxxa-evb.dtsi [new file with mode: 0644]
src/arm64/freescale/s32gxxxa-rdb.dtsi [new file with mode: 0644]
src/arm64/freescale/tqma8xx.dtsi
src/arm64/hisilicon/hi3660-coresight.dtsi
src/arm64/marvell/ac5-98dx25xx.dtsi
src/arm64/marvell/armada-371x.dtsi [deleted file]
src/arm64/marvell/armada-3720-db.dts
src/arm64/marvell/armada-3720-espressobin-emmc.dts
src/arm64/marvell/armada-3720-espressobin-ultra.dts
src/arm64/marvell/armada-3720-espressobin-v7-emmc.dts
src/arm64/marvell/armada-3720-espressobin-v7.dts
src/arm64/marvell/armada-3720-espressobin.dts
src/arm64/marvell/armada-3720-gl-mv1000.dts
src/arm64/marvell/armada-3720-turris-mox.dts
src/arm64/marvell/armada-3720-uDPU.dtsi
src/arm64/marvell/armada-372x.dtsi
src/arm64/marvell/armada-37xx.dtsi
src/arm64/marvell/armada-7020.dtsi
src/arm64/marvell/armada-7040.dtsi
src/arm64/marvell/armada-8020.dtsi
src/arm64/marvell/armada-8040-clearfog-gt-8k.dts
src/arm64/marvell/armada-8040-puzzle-m801.dts
src/arm64/marvell/armada-8040.dtsi
src/arm64/marvell/armada-8080.dtsi
src/arm64/marvell/armada-ap806-dual.dtsi
src/arm64/marvell/armada-ap806-quad.dtsi
src/arm64/marvell/armada-ap806.dtsi
src/arm64/marvell/armada-ap807-quad.dtsi
src/arm64/marvell/armada-ap807.dtsi
src/arm64/marvell/armada-ap80x.dtsi
src/arm64/marvell/armada-ap810-ap0-octa-core.dtsi
src/arm64/marvell/armada-ap810-ap0.dtsi
src/arm64/marvell/armada-cp110.dtsi
src/arm64/marvell/armada-cp115.dtsi
src/arm64/marvell/armada-cp11x.dtsi
src/arm64/marvell/cn9130-sr-som.dtsi
src/arm64/mediatek/mt6359.dtsi
src/arm64/mediatek/mt8173-elm.dtsi
src/arm64/mediatek/mt8173.dtsi
src/arm64/mediatek/mt8183-kukui-jacuzzi-damu.dts
src/arm64/mediatek/mt8183-kukui-jacuzzi-fennel-sku1.dts
src/arm64/mediatek/mt8183-kukui-jacuzzi-fennel-sku6.dts
src/arm64/mediatek/mt8183-kukui-jacuzzi-fennel-sku7.dts
src/arm64/mediatek/mt8188-geralt.dtsi
src/arm64/mediatek/mt8188.dtsi
src/arm64/mediatek/mt8195-cherry.dtsi
src/arm64/mediatek/mt8195.dtsi
src/arm64/mediatek/mt8365-evk.dts
src/arm64/mediatek/mt8365.dtsi
src/arm64/mediatek/mt8370-genio-510-evk.dts [new file with mode: 0644]
src/arm64/mediatek/mt8370.dtsi [new file with mode: 0644]
src/arm64/mediatek/mt8390-genio-700-evk.dts
src/arm64/mediatek/mt8390-genio-common.dtsi [new file with mode: 0644]
src/arm64/mediatek/mt8395-genio-1200-evk.dts
src/arm64/mediatek/mt8395-radxa-nio-12l-8-hd-panel.dtso [new file with mode: 0644]
src/arm64/mediatek/mt8395-radxa-nio-12l.dts
src/arm64/nvidia/tegra210-p2180.dtsi
src/arm64/nvidia/tegra210-p2597.dtsi
src/arm64/nvidia/tegra210-p3450-0000.dts
src/arm64/nvidia/tegra210.dtsi
src/arm64/nvidia/tegra234-p3740-0002+p3701-0008.dts
src/arm64/nvidia/tegra234-p3768-0000+p3767.dtsi
src/arm64/qcom/sc8280xp-huawei-gaokun3.dts
src/arm64/renesas/beacon-renesom-som.dtsi
src/arm64/renesas/condor-common.dtsi
src/arm64/renesas/draak.dtsi
src/arm64/renesas/ebisu.dtsi
src/arm64/renesas/hihope-common.dtsi
src/arm64/renesas/r8a774a1.dtsi
src/arm64/renesas/r8a774b1.dtsi
src/arm64/renesas/r8a774c0-cat874.dts
src/arm64/renesas/r8a774c0.dtsi
src/arm64/renesas/r8a774e1.dtsi
src/arm64/renesas/r8a77951.dtsi
src/arm64/renesas/r8a77960.dtsi
src/arm64/renesas/r8a77961.dtsi
src/arm64/renesas/r8a77965.dtsi
src/arm64/renesas/r8a77970-eagle-function-expansion.dtso
src/arm64/renesas/r8a77970-eagle.dts
src/arm64/renesas/r8a77970-v3msk.dts
src/arm64/renesas/r8a77970.dtsi
src/arm64/renesas/r8a77980-v3hsk.dts
src/arm64/renesas/r8a77980.dtsi
src/arm64/renesas/r8a77990.dtsi
src/arm64/renesas/r8a77995.dtsi
src/arm64/renesas/r8a779a0-falcon-cpu.dtsi
src/arm64/renesas/r8a779a0.dtsi
src/arm64/renesas/r8a779f0-spider-cpu.dtsi
src/arm64/renesas/r8a779f0-spider-ethernet.dtsi
src/arm64/renesas/r8a779f0.dtsi
src/arm64/renesas/r8a779f4-s4sk.dts
src/arm64/renesas/r8a779g0.dtsi
src/arm64/renesas/r8a779h0-gray-hawk-single.dts
src/arm64/renesas/r8a779h0.dtsi
src/arm64/renesas/r9a07g044l2-remi-pi.dts [new file with mode: 0644]
src/arm64/renesas/r9a08g045.dtsi
src/arm64/renesas/r9a08g045s33-smarc-pmod1-type-3a.dtso [new file with mode: 0644]
src/arm64/renesas/r9a09g047.dtsi
src/arm64/renesas/r9a09g057.dtsi
src/arm64/renesas/r9a09g057h44-rzv2h-evk.dts
src/arm64/renesas/r9a09g057h48-kakip.dts [new file with mode: 0644]
src/arm64/renesas/rzg3e-smarc-som.dtsi
src/arm64/renesas/rzg3s-smarc-som.dtsi
src/arm64/renesas/rzg3s-smarc-switches.h [new file with mode: 0644]
src/arm64/renesas/rzg3s-smarc.dtsi
src/arm64/renesas/salvator-common.dtsi
src/arm64/renesas/ulcb-kf-audio-graph-card-mix+split.dtsi
src/arm64/renesas/ulcb-kf-audio-graph-card2-mix+split.dtsi
src/arm64/renesas/ulcb-kf-simple-audio-card-mix+split.dtsi
src/arm64/renesas/ulcb.dtsi
src/arm64/renesas/white-hawk-cpu-common.dtsi
src/arm64/renesas/white-hawk-csi-dsi.dtsi
src/arm64/rockchip/px30-engicam-common.dtsi
src/arm64/rockchip/px30-engicam-ctouch2.dtsi
src/arm64/rockchip/px30-engicam-px30-core-edimm2.2.dts
src/arm64/rockchip/px30-ringneck-haikou-lvds-9904379.dtso [new file with mode: 0644]
src/arm64/rockchip/px30-ringneck-haikou-video-demo.dtso [new file with mode: 0644]
src/arm64/rockchip/px30-ringneck-haikou.dts
src/arm64/rockchip/px30-ringneck.dtsi
src/arm64/rockchip/rk3308-roc-cc.dts
src/arm64/rockchip/rk3318-a95x-z2.dts
src/arm64/rockchip/rk3328-rock-pi-e.dts
src/arm64/rockchip/rk3399-nanopi4.dtsi
src/arm64/rockchip/rk3399-puma-haikou-video-demo.dtso [new file with mode: 0644]
src/arm64/rockchip/rk3399-puma-haikou.dts
src/arm64/rockchip/rk3399-puma.dtsi
src/arm64/rockchip/rk3399-roc-pc-plus.dts
src/arm64/rockchip/rk3399-rock-pi-4.dtsi
src/arm64/rockchip/rk3528-pinctrl.dtsi [new file with mode: 0644]
src/arm64/rockchip/rk3528-radxa-e20c.dts
src/arm64/rockchip/rk3528.dtsi
src/arm64/rockchip/rk3566-bigtreetech-cb2.dtsi
src/arm64/rockchip/rk3566-pinenote.dtsi
src/arm64/rockchip/rk3566-quartz64-a.dts
src/arm64/rockchip/rk3566-quartz64-b.dts
src/arm64/rockchip/rk3568-photonicat.dts [new file with mode: 0644]
src/arm64/rockchip/rk3568-qnap-ts433.dts
src/arm64/rockchip/rk3568-rock-3a.dts
src/arm64/rockchip/rk356x-base.dtsi
src/arm64/rockchip/rk3576-armsom-sige5.dts
src/arm64/rockchip/rk3576-evb1-v10.dts
src/arm64/rockchip/rk3576-roc-pc.dts [new file with mode: 0644]
src/arm64/rockchip/rk3576-rock-4d.dts [new file with mode: 0644]
src/arm64/rockchip/rk3576.dtsi
src/arm64/rockchip/rk3588-armsom-lm7.dtsi
src/arm64/rockchip/rk3588-armsom-sige7.dts
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-edgeble-neu6a-common.dtsi
src/arm64/rockchip/rk3588-edgeble-neu6a-io.dtsi
src/arm64/rockchip/rk3588-evb1-v10.dts
src/arm64/rockchip/rk3588-extra.dtsi
src/arm64/rockchip/rk3588-fet3588-c.dtsi
src/arm64/rockchip/rk3588-firefly-core-3588j.dtsi
src/arm64/rockchip/rk3588-firefly-icore-3588q.dtsi [new file with mode: 0644]
src/arm64/rockchip/rk3588-firefly-itx-3588j.dts
src/arm64/rockchip/rk3588-friendlyelec-cm3588-nas.dts
src/arm64/rockchip/rk3588-friendlyelec-cm3588.dtsi
src/arm64/rockchip/rk3588-h96-max-v58.dts
src/arm64/rockchip/rk3588-jaguar-pre-ict-tester.dtso [new file with mode: 0644]
src/arm64/rockchip/rk3588-jaguar.dts
src/arm64/rockchip/rk3588-mnt-reform2.dts [new file with mode: 0644]
src/arm64/rockchip/rk3588-nanopc-t6.dtsi
src/arm64/rockchip/rk3588-ok3588-c.dts
src/arm64/rockchip/rk3588-orangepi-5-compact.dtsi
src/arm64/rockchip/rk3588-orangepi-5-max.dts
src/arm64/rockchip/rk3588-orangepi-5-plus.dts
src/arm64/rockchip/rk3588-orangepi-5-ultra.dts [new file with mode: 0644]
src/arm64/rockchip/rk3588-orangepi-5.dtsi
src/arm64/rockchip/rk3588-quartzpro64.dts
src/arm64/rockchip/rk3588-rock-5-itx.dts
src/arm64/rockchip/rk3588-rock-5b.dts
src/arm64/rockchip/rk3588-tiger-haikou.dts
src/arm64/rockchip/rk3588-tiger.dtsi
src/arm64/rockchip/rk3588-toybrick-x0.dts
src/arm64/rockchip/rk3588-turing-rk1.dtsi
src/arm64/rockchip/rk3588j.dtsi
src/arm64/rockchip/rk3588s-coolpi-4b.dts
src/arm64/rockchip/rk3588s-evb1-v10.dts
src/arm64/rockchip/rk3588s-gameforce-ace.dts
src/arm64/rockchip/rk3588s-indiedroid-nova.dts
src/arm64/rockchip/rk3588s-khadas-edge2.dts
src/arm64/rockchip/rk3588s-nanopi-r6.dtsi
src/arm64/rockchip/rk3588s-odroid-m2.dts
src/arm64/rockchip/rk3588s-orangepi-5.dtsi
src/arm64/rockchip/rk3588s-rock-5a.dts
src/arm64/rockchip/rk3588s-rock-5c.dts
src/arm64/st/stm32mp211.dtsi [new file with mode: 0644]
src/arm64/st/stm32mp213.dtsi [new file with mode: 0644]
src/arm64/st/stm32mp215.dtsi [new file with mode: 0644]
src/arm64/st/stm32mp215f-dk.dts [new file with mode: 0644]
src/arm64/st/stm32mp21xc.dtsi [new file with mode: 0644]
src/arm64/st/stm32mp21xf.dtsi [new file with mode: 0644]
src/arm64/st/stm32mp231.dtsi [new file with mode: 0644]
src/arm64/st/stm32mp233.dtsi [new file with mode: 0644]
src/arm64/st/stm32mp235.dtsi [new file with mode: 0644]
src/arm64/st/stm32mp235f-dk.dts [new file with mode: 0644]
src/arm64/st/stm32mp23xc.dtsi [new file with mode: 0644]
src/arm64/st/stm32mp23xf.dtsi [new file with mode: 0644]
src/arm64/st/stm32mp251.dtsi
src/arm64/st/stm32mp257f-dk.dts [new file with mode: 0644]
src/arm64/tesla/fsd.dtsi
src/arm64/ti/k3-am62-phycore-som.dtsi
src/arm64/ti/k3-am62-verdin-dahlia.dtsi
src/arm64/ti/k3-am625-beagleplay.dts
src/arm64/ti/k3-am62a-mcu.dtsi
src/arm64/ti/k3-am62a-phycore-som.dtsi
src/arm64/ti/k3-am62a7-sk.dts
src/arm64/ti/k3-am62p-j722s-common-mcu.dtsi
src/arm64/ti/k3-am62p-j722s-common-wakeup.dtsi
src/arm64/ti/k3-am62p-main.dtsi
src/arm64/ti/k3-am62p5-sk.dts
src/arm64/ti/k3-am62x-phyboard-lyra.dtsi
src/arm64/ti/k3-am62x-sk-common.dtsi
src/arm64/ti/k3-am64-phycore-som.dtsi
src/arm64/ti/k3-am642-phyboard-electra-rdk.dts
src/arm64/ti/k3-am642-phyboard-electra-x27-gpio1-spi1-uart3.dtso [new file with mode: 0644]
src/arm64/ti/k3-j721e-common-proc-board.dts
src/arm64/ti/k3-j721e-sk.dts
src/arm64/ti/k3-j721s2-som-p0.dtsi
src/arm64/ti/k3-j722s-evm.dts
src/arm64/ti/k3-j722s-main.dtsi
src/arm64/ti/k3-j784s4-evm-quad-port-eth-exp1.dtso
src/arm64/ti/k3-j784s4-j742s2-main-common.dtsi
src/arm64/xilinx/versal-net-clk.dtsi [new file with mode: 0644]
src/arm64/xilinx/versal-net-vn-x-b2197-01-revA.dts [new file with mode: 0644]
src/arm64/xilinx/versal-net.dtsi [new file with mode: 0644]
src/arm64/xilinx/xlnx-zynqmp-clk.h [new file with mode: 0644]
src/arm64/xilinx/zynqmp-clk-ccf.dtsi
src/loongarch/loongson-2k1000-ref.dts
src/mips/ingenic/gcw0.dts
src/mips/ingenic/rs90.dts
src/mips/mobileye/eyeq6h.dtsi
src/mips/ralink/gardena_smart_gateway_mt7688.dts
src/mips/ralink/mt7620a.dtsi
src/mips/ralink/mt7620a_eval.dts
src/mips/ralink/mt7628a.dtsi
src/mips/ralink/omega2p.dts
src/mips/ralink/rt2880.dtsi
src/mips/ralink/rt2880_eval.dts
src/mips/ralink/rt3050.dtsi
src/mips/ralink/rt3883.dtsi
src/mips/ralink/rt3883_eval.dts
src/mips/realtek/cisco_sg220-26.dts
src/mips/realtek/rtl838x.dtsi
src/mips/realtek/rtl83xx.dtsi [deleted file]
src/mips/realtek/rtl930x.dtsi
src/powerpc/microwatt.dts
src/riscv/microchip/mpfs-icicle-kit-fabric.dtsi
src/riscv/microchip/mpfs-m100pfs-fabric.dtsi
src/riscv/microchip/mpfs-polarberry-fabric.dtsi
src/riscv/sophgo/cv18xx.dtsi
src/riscv/sophgo/sg2042-milkv-pioneer.dts
src/riscv/sophgo/sg2042.dtsi
src/riscv/spacemit/k1-milkv-jupiter.dts [new file with mode: 0644]
src/riscv/starfive/jh7110-common.dtsi
src/riscv/starfive/jh7110-deepcomputing-fml13v01.dts
src/riscv/starfive/jh7110-pine64-star64.dts
src/riscv/starfive/jh7110.dtsi

index dc9aab1..da60e9d 100644 (file)
@@ -57,6 +57,25 @@ description: |
   - iPad Pro (2nd Generation) (10.5 Inch)
   - iPad Pro (2nd Generation) (12.9 Inch)
 
+  Devices based on the "T2" SoC:
+
+  - Apple T2 MacBookPro15,2 (j132)
+  - Apple T2 iMacPro1,1 (j137)
+  - Apple T2 MacBookAir8,2 (j140a)
+  - Apple T2 MacBookAir8,1 (j140k)
+  - Apple T2 MacBookPro16,1 (j152f)
+  - Apple T2 MacPro7,1 (j160)
+  - Apple T2 Macmini8,1 (j174)
+  - Apple T2 iMac20,1 (j185)
+  - Apple T2 iMac20,2 (j185f)
+  - Apple T2 MacBookPro15,4 (j213)
+  - Apple T2 MacBookPro16,2 (j214k)
+  - Apple T2 MacBookPro16,4 (j215)
+  - Apple T2 MacBookPro16,3 (j223)
+  - Apple T2 MacBookAir9,1 (j230k)
+  - Apple T2 MacBookPro15,1 (j680)
+  - Apple T2 MacBookPro15,3 (j780)
+
   Devices based on the "A11" SoC:
 
   - iPhone 8
@@ -211,6 +230,28 @@ properties:
           - const: apple,t8011
           - const: apple,arm-platform
 
+      - description: Apple T2 SoC based platforms
+        items:
+          - enum:
+              - apple,j132  # Apple T2 MacBookPro15,2 (j132)
+              - apple,j137  # Apple T2 iMacPro1,1 (j137)
+              - apple,j140a # Apple T2 MacBookAir8,2 (j140a)
+              - apple,j140k # Apple T2 MacBookAir8,1 (j140k)
+              - apple,j152f # Apple T2 MacBookPro16,1 (j152f)
+              - apple,j160  # Apple T2 MacPro7,1 (j160)
+              - apple,j174  # Apple T2 Macmini8,1 (j174)
+              - apple,j185  # Apple T2 iMac20,1 (j185)
+              - apple,j185f # Apple T2 iMac20,2 (j185f)
+              - apple,j213  # Apple T2 MacBookPro15,4 (j213)
+              - apple,j214k # Apple T2 MacBookPro16,2 (j214k)
+              - apple,j215  # Apple T2 MacBookPro16,4 (j215)
+              - apple,j223  # Apple T2 MacBookPro16,3 (j223)
+              - apple,j230k # Apple T2 MacBookAir9,1 (j230k)
+              - apple,j680  # Apple T2 MacBookPro15,1 (j680)
+              - apple,j780  # Apple T2 MacBookPro15,3 (j780)
+          - const: apple,t8012
+          - const: apple,arm-platform
+
       - description: Apple A11 SoC based platforms
         items:
           - enum:
index 673277a..5001f4d 100644 (file)
@@ -22,6 +22,11 @@ properties:
   compatible:
     items:
       - enum:
+          - apple,s5l8960x-pmgr
+          - apple,t7000-pmgr
+          - apple,s8000-pmgr
+          - apple,t8010-pmgr
+          - apple,t8015-pmgr
           - apple,t8103-pmgr
           - apple,t8112-pmgr
           - apple,t6000-pmgr
index cb8dcea..4787d7c 100644 (file)
@@ -101,6 +101,29 @@ properties:
           and ETF configurations.
         $ref: /schemas/graph.yaml#/properties/port
 
+  memory-region:
+    items:
+      - description: Reserved trace buffer memory for ETR and ETF sinks.
+          For ETR, this reserved memory region is used for trace data capture.
+          Same region is used for trace data retention as well after a panic
+          or watchdog reset.
+          This reserved memory region is used as trace buffer or used for trace
+          data retention only if specifically selected by the user in sysfs
+          interface.
+          The default memory usage models for ETR in sysfs/perf modes are
+          otherwise unaltered.
+
+          For ETF, this reserved memory region is used by default for
+          retention of trace data synced from internal SRAM after a panic
+          or watchdog reset.
+      - description: Reserved meta data memory. Used for ETR and ETF sinks
+          for storing metadata.
+
+  memory-region-names:
+    items:
+      - const: tracedata
+      - const: metadata
+
 required:
   - compatible
   - reg
@@ -115,6 +138,9 @@ examples:
     etr@20070000 {
         compatible = "arm,coresight-tmc", "arm,primecell";
         reg = <0x20070000 0x1000>;
+        memory-region = <&etr_trace_mem_reserved>,
+                       <&etr_mdata_mem_reserved>;
+        memory-region-names = "tracedata", "metadata";
 
         clocks = <&oscclk6a>;
         clock-names = "apb_pclk";
diff --git a/Bindings/arm/arm,morello.yaml b/Bindings/arm/arm,morello.yaml
new file mode 100644 (file)
index 0000000..e843b97
--- /dev/null
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/arm,morello.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARM Morello Platforms
+
+maintainers:
+  - Vincenzo Frascino <vincenzo.frascino@arm.com>
+
+description: |+
+  The Morello architecture is an experimental extension to Armv8.2-A,
+  which extends the AArch64 state with the principles proposed in
+  version 7 of the Capability Hardware Enhanced RISC Instructions
+  (CHERI) ISA.
+
+  ARM's Morello Platforms are built as a research project to explore
+  capability architectures based on arm.
+
+properties:
+  $nodename:
+    const: '/'
+  compatible:
+    oneOf:
+      - description: Arm Morello System Platforms
+        items:
+          - enum:
+              - arm,morello-sdp
+              - arm,morello-fvp
+          - const: arm,morello
+
+additionalProperties: true
+
+...
index 0ec2936..3a34b7a 100644 (file)
@@ -22,8 +22,6 @@ properties:
       - items:
           - const: atmel,at91rm9200
       - items:
-          - enum:
-              - olimex,sam9-l9260
           - enum:
               - atmel,at91sam9260
               - atmel,at91sam9261
@@ -36,6 +34,37 @@ properties:
               - atmel,at91sam9x60
           - const: atmel,at91sam9
 
+      - description: Olimex SAM9-L9260
+        items:
+          - const: olimex,sam9-l9260
+          - const: atmel,at91sam9260
+          - const: atmel,at91sam9
+
+      - description: Calao USB A9260
+        items:
+          - const: calao,usb-a9260
+          - const: atmel,at91sam9260
+          - const: atmel,at91sam9
+
+      - description: Calao USB A9263
+        items:
+          - const: calao,usb-a9263
+          - const: atmel,at91sam9263
+          - const: atmel,at91sam9
+
+      - description: Calao USB A9G20
+        items:
+          - const: calao,usb-a9g20
+          - const: atmel,at91sam9g20
+          - const: atmel,at91sam9
+
+      - description: Calao USB A9G20-LPW
+        items:
+          - const: calao,usb-a9g20-lpw
+          - const: calao,usb-a9g20
+          - const: atmel,at91sam9g20
+          - const: atmel,at91sam9
+
       - items:
           - enum:
               - overkiz,kizboxmini-base # Overkiz kizbox Mini Base Board
index 1a173e9..d3821f6 100644 (file)
@@ -2,6 +2,7 @@ Atmel system registers
 
 Chipid required properties:
 - compatible: Should be "atmel,sama5d2-chipid" or "microchip,sama7g5-chipid"
+                       "microchip,sama7d65-chipid"
 - reg : Should contain registers location and length
 
 PIT Timer required properties:
index 73dd73d..2e666b2 100644 (file)
@@ -177,6 +177,7 @@ properties:
       - arm,neoverse-v2
       - arm,neoverse-v3
       - arm,neoverse-v3ae
+      - arm,rainier
       - brcm,brahma-b15
       - brcm,brahma-b53
       - brcm,vulcan
index 0db2cbd..1b90870 100644 (file)
@@ -97,6 +97,7 @@ properties:
               - i2se,duckbill
               - i2se,duckbill-2
               - karo,tx28                 # Ka-Ro electronics TX28 module
+              - lwn,imx28-btt3
               - lwn,imx28-xea
               - msr,m28cu3                # M28 SoM with custom base board
               - schulercontrol,imx28-sps1
@@ -296,7 +297,6 @@ properties:
               - technexion,imx6q-pico-pi      # TechNexion i.MX6Q Pico-Pi
               - technologic,imx6q-ts4900
               - technologic,imx6q-ts7970
-              - toradex,apalis_imx6q      # Apalis iMX6 Modules
               - udoo,imx6q-udoo           # Udoo i.MX6 Quad Board
               - uniwest,imx6q-evi         # Uniwest Evi
               - variscite,dt6customboard
@@ -490,7 +490,6 @@ properties:
               - technexion,imx6dl-pico-pi      # TechNexion i.MX6DL Pico-Pi
               - technologic,imx6dl-ts4900
               - technologic,imx6dl-ts7970
-              - toradex,colibri_imx6dl      # Colibri iMX6 Modules
               - udoo,imx6dl-udoo          # Udoo i.MX6 Dual-lite Board
               - vdl,lanmcu                # Van der Laan LANMCU board
               - wand,imx6dl-wandboard     # Wandboard i.MX6 Dual Lite Board
@@ -688,6 +687,12 @@ properties:
           - const: phytec,imx6ul-pcl063   # PHYTEC phyCORE-i.MX 6UL
           - const: fsl,imx6ul
 
+      - description: i.MX6UL Variscite VAR-SOM-MX6 Boards
+        items:
+          - const: variscite,mx6ulconcerto
+          - const: variscite,var-som-imx6ul
+          - const: fsl,imx6ul
+
       - description: Kontron BL i.MX6UL (N631X S) Board
         items:
           - const: kontron,bl-imx6ul       # Kontron BL i.MX6UL Carrier Board
@@ -730,9 +735,6 @@ properties:
               - joz,jozacp                # JOZ Access Point
               - kontron,sl-imx6ull        # Kontron SL i.MX6ULL SoM
               - myir,imx6ull-mys-6ulx-eval # MYiR Tech iMX6ULL Evaluation Board
-              - toradex,colibri-imx6ull      # Colibri iMX6ULL Modules
-              - toradex,colibri-imx6ull-emmc # Colibri iMX6ULL 1GB (eMMC) Module
-              - toradex,colibri-imx6ull-wifi # Colibri iMX6ULL Wi-Fi / BT Modules
               - uni-t,uti260b             # UNI-T UTi260B Thermal Camera
           - const: fsl,imx6ull
 
@@ -891,8 +893,6 @@ properties:
               - technexion,imx7d-pico-hobbit  # TechNexion i.MX7D Pico-Hobbit
               - technexion,imx7d-pico-nymph   # TechNexion i.MX7D Pico-Nymph
               - technexion,imx7d-pico-pi      # TechNexion i.MX7D Pico-Pi
-              - toradex,colibri-imx7d         # Colibri iMX7D Module
-              - toradex,colibri-imx7d-emmc    # Colibri iMX7D 1GB (eMMC) Module
               - zii,imx7d-rmu2            # ZII RMU2 Board
               - zii,imx7d-rpu2            # ZII RPU2 Board
           - const: fsl,imx7d
@@ -962,9 +962,6 @@ properties:
               - innocomm,wb15-evk         # i.MX8MM Innocomm EVK board with WB15 SoM
               - kontron,imx8mm-sl         # i.MX8MM Kontron SL (N801X) SOM
               - kontron,imx8mm-osm-s      # i.MX8MM Kontron OSM-S (N802X) SOM
-              - toradex,verdin-imx8mm     # Verdin iMX8M Mini Modules
-              - toradex,verdin-imx8mm-nonwifi  # Verdin iMX8M Mini Modules without Wi-Fi / BT
-              - toradex,verdin-imx8mm-wifi  # Verdin iMX8M Mini Wi-Fi / BT Modules
               - prt,prt8mm                # i.MX8MM Protonic PRT8MM Board
           - const: fsl,imx8mm
 
@@ -1098,12 +1095,12 @@ properties:
               - gateworks,imx8mp-gw74xx   # i.MX8MP Gateworks Board
               - gateworks,imx8mp-gw75xx-2x # i.MX8MP Gateworks Board
               - gateworks,imx8mp-gw82xx-2x # i.MX8MP Gateworks Board
+              - skov,imx8mp-skov-basic # SKOV i.MX8MP baseboard without frontplate
               - skov,imx8mp-skov-revb-hdmi # SKOV i.MX8MP climate control without panel
               - skov,imx8mp-skov-revb-lt6 # SKOV i.MX8MP climate control with 7” panel
               - skov,imx8mp-skov-revb-mi1010ait-1cp1 # SKOV i.MX8MP climate control with 10.1" panel
-              - toradex,verdin-imx8mp     # Verdin iMX8M Plus Modules
-              - toradex,verdin-imx8mp-nonwifi  # Verdin iMX8M Plus Modules without Wi-Fi / BT
-              - toradex,verdin-imx8mp-wifi  # Verdin iMX8M Plus Wi-Fi / BT Modules
+              - skov,imx8mp-skov-revc-bd500 # SKOV i.MX8MP climate control with LED frontplate
+              - skov,imx8mp-skov-revc-tian-g07017 # SKOV i.MX8MP climate control with 7" panel
               - ysoft,imx8mp-iota2-lumpy  # Y Soft i.MX8MP IOTA2 Lumpy Board
           - const: fsl,imx8mp
 
@@ -1273,8 +1270,6 @@ properties:
           - enum:
               - fsl,imx8qm-mek           # i.MX8QM MEK Board
               - fsl,imx8qm-mek-revd      # i.MX8QM MEK Rev D Board
-              - toradex,apalis-imx8      # Apalis iMX8 Modules
-              - toradex,apalis-imx8-v1.1 # Apalis iMX8 V1.1 Modules
           - const: fsl,imx8qm
 
       - description: i.MX8QM Boards with Toradex Apalis iMX8 Modules
@@ -1355,6 +1350,7 @@ properties:
       - description: i.MX95 based Boards
         items:
           - enum:
+              - fsl,imx95-15x15-evk       # i.MX95 15x15 EVK Board
               - fsl,imx95-19x19-evk       # i.MX95 19x19 EVK Board
           - const: fsl,imx95
 
@@ -1435,7 +1431,6 @@ properties:
               - fsl,vf610-twr             # VF610 Tower Board
               - lwn,bk4                   # Liebherr BK4 controller
               - phytec,vf610-cosmic       # PHYTEC Cosmic/Cosmic+ Board
-              - toradex,vf610-colibri_vf61 # Colibri VF61 Modules
           - const: fsl,vf610
 
       - description: Toradex Colibri VF61 Module on Colibri Evaluation Board
index e20b5c9..99961e5 100644 (file)
@@ -34,10 +34,11 @@ properties:
     const: '/'
   compatible:
     oneOf:
-      - description: Google Pixel 6 / Oriole
+      - description: Google Pixel 6 or 6 Pro (Oriole or Raven)
         items:
           - enum:
               - google,gs101-oriole
+              - google,gs101-raven
           - const: google,gs101
 
   # Bootloader requires empty ect node to be present
index 6905d29..51e1386 100644 (file)
@@ -18,6 +18,7 @@ properties:
         items:
           - enum:
               - cznic,turris-mox
+              - glinet,gl-mv1000
               - globalscale,espressobin
               - marvell,armada-3720-db
               - methode,edpu
index 538d91b..4bc7454 100644 (file)
@@ -23,6 +23,9 @@ properties:
 
       - description: Armada 7040 SoC
         items:
+          - enum:
+              - globalscale,mochabin
+              - marvell,armada7040-db
           - const: marvell,armada7040
           - const: marvell,armada-ap806-quad
           - const: marvell,armada-ap806
@@ -35,10 +38,32 @@ properties:
 
       - description: Armada 8040 SoC
         items:
+          - enum:
+              - iei,puzzle-m801
+              - marvell,armada8040-db
+              - solidrun,clearfog-gt-8k
           - const: marvell,armada8040
           - const: marvell,armada-ap806-quad
           - const: marvell,armada-ap806
 
+      - description: Armada 8040 SoC MACCHIATOBin Boards
+        items:
+          - enum:
+              - marvell,armada8040-mcbin-doubleshot
+              - marvell,armada8040-mcbin-singleshot
+          - const: marvell,armada8040-mcbin
+          - const: marvell,armada8040
+          - const: marvell,armada-ap806-quad
+          - const: marvell,armada-ap806
+
+      - description: Armada 8080 SoC
+        items:
+          - enum:
+              - marvell,armada-8080-db
+          - const: marvell,armada-8080
+          - const: marvell,armada-ap810-octa
+          - const: marvell,armada-ap810
+
       - description: Armada CN9130 SoC with no external CP
         items:
           - const: marvell,cn9130
diff --git a/Bindings/arm/marvell/armada-8kp.txt b/Bindings/arm/marvell/armada-8kp.txt
deleted file mode 100644 (file)
index f3e9624..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-Marvell Armada 8KPlus Platforms Device Tree Bindings
-----------------------------------------------------
-
-Boards using a SoC of the Marvell Armada 8KP families must carry
-the following root node property:
-
- - compatible, with one of the following values:
-
-   - "marvell,armada-8080", "marvell,armada-ap810-octa", "marvell,armada-ap810"
-     when the SoC being used is the Armada 8080
-
-Example:
-
-compatible = "marvell,armada-8080-db", "marvell,armada-8080",
-            "marvell,armada-ap810-octa", "marvell,armada-ap810"
index 3ce34d6..108ae5e 100644 (file)
@@ -412,6 +412,11 @@ properties:
           - enum:
               - mediatek,mt8365-evk
           - const: mediatek,mt8365
+      - items:
+          - enum:
+              - mediatek,mt8370-evk
+          - const: mediatek,mt8370
+          - const: mediatek,mt8188
       - items:
           - enum:
               - mediatek,mt8390-evk
index a148ff5..295963a 100644 (file)
@@ -67,6 +67,7 @@ properties:
           - arm,neoverse-v2-pmu
           - arm,neoverse-v3-pmu
           - arm,neoverse-v3ae-pmu
+          - arm,rainier-pmu
           - brcm,vulcan-pmu
           - cavium,thunder-pmu
           - nvidia,denver-pmu
diff --git a/Bindings/arm/qcom,coresight-ctcu.yaml b/Bindings/arm/qcom,coresight-ctcu.yaml
new file mode 100644 (file)
index 0000000..843b52e
--- /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/arm/qcom,coresight-ctcu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: CoreSight TMC Control Unit
+
+maintainers:
+  - Yuanfang Zhang <quic_yuanfang@quicinc.com>
+  - Mao Jinlong <quic_jinlmao@quicinc.com>
+  - Jie Gan <quic_jiegan@quicinc.com>
+
+description: |
+  The Trace Memory Controller(TMC) is used for Embedded Trace Buffer(ETB),
+  Embedded Trace FIFO(ETF) and Embedded Trace Router(ETR) configurations.
+  The configuration mode (ETB, ETF, ETR) is discovered at boot time when
+  the device is probed.
+
+  The Coresight TMC Control unit controls various Coresight behaviors.
+  It works as a helper device when connected to TMC ETR device.
+  It is responsible for controlling the data filter function based on
+  the source device's Trace ID for TMC ETR device. The trace data with
+  that Trace id can get into ETR's buffer while other trace data gets
+  ignored.
+
+properties:
+  compatible:
+    enum:
+      - qcom,sa8775p-ctcu
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: apb
+
+  in-ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    patternProperties:
+      '^port(@[0-1])?$':
+        description: Input connections from CoreSight Trace bus
+        $ref: /schemas/graph.yaml#/properties/port
+
+required:
+  - compatible
+  - reg
+  - in-ports
+
+additionalProperties: false
+
+examples:
+  - |
+    ctcu@1001000 {
+        compatible = "qcom,sa8775p-ctcu";
+        reg = <0x1001000 0x1000>;
+
+        clocks = <&aoss_qmp>;
+        clock-names = "apb";
+
+        in-ports {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            port@0 {
+                reg = <0>;
+                ctcu_in_port0: endpoint {
+                    remote-endpoint = <&etr0_out_port>;
+                };
+            };
+
+            port@1 {
+                reg = <1>;
+                ctcu_in_port1: endpoint {
+                    remote-endpoint = <&etr1_out_port>;
+                };
+            };
+        };
+    };
index 76163ab..5ed40f2 100644 (file)
@@ -55,8 +55,7 @@ properties:
       - const: arm,primecell
 
   reg:
-    minItems: 1
-    maxItems: 2
+    maxItems: 1
 
   clocks:
     maxItems: 1
index 8eec07d..07d21a3 100644 (file)
@@ -41,8 +41,7 @@ properties:
       - const: arm,primecell
 
   reg:
-    minItems: 1
-    maxItems: 2
+    maxItems: 1
 
   qcom,dsb-element-bits:
     description:
index 522a6f0..650fb83 100644 (file)
@@ -49,6 +49,11 @@ properties:
               - anbernic,rg-arc-s
           - const: rockchip,rk3566
 
+      - description: Ariaboard Photonicat
+        items:
+          - const: ariaboard,photonicat
+          - const: rockchip,rk3568
+
       - description: ArmSoM Sige5 board
         items:
           - const: armsom,sige5
@@ -178,6 +183,13 @@ properties:
           - const: engicam,px30-core
           - const: rockchip,px30
 
+      - description: Firefly iCore-3588Q-based boards
+        items:
+          - enum:
+              - mntre,reform2-rcore
+          - const: firefly,icore-3588q
+          - const: rockchip,rk3588
+
       - description: Firefly Core-3588J-based boards
         items:
           - enum:
@@ -236,6 +248,11 @@ properties:
               - firefly,roc-rk3399-pc-plus
           - const: rockchip,rk3399
 
+      - description: Firefly ROC-RK3576-PC
+        items:
+          - const: firefly,roc-rk3576-pc
+          - const: rockchip,rk3576
+
       - description: Firefly Station M2
         items:
           - const: firefly,rk3566-roc-pc
@@ -862,6 +879,11 @@ properties:
           - const: radxa,rock-4c-plus
           - const: rockchip,rk3399
 
+      - description: Radxa ROCK 4D
+        items:
+          - const: radxa,rock-4d
+          - const: rockchip,rk3576
+
       - description: Radxa ROCK 4SE
         items:
           - const: radxa,rock-4se
@@ -1136,11 +1158,12 @@ properties:
           - const: xunlong,orangepi-3b
           - const: rockchip,rk3566
 
-      - description: Xunlong Orange Pi 5 Max/Plus
+      - description: Xunlong Orange Pi 5 Max/Plus/Ultra
         items:
           - enum:
               - xunlong,orangepi-5-max
               - xunlong,orangepi-5-plus
+              - xunlong,orangepi-5-ultra
           - const: rockchip,rk3588
 
       - description: Xunlong Orange Pi R1 Plus / LTS
index d083d8a..ed97652 100644 (file)
@@ -21,6 +21,8 @@ properties:
               - st,stm32f4-gcan
               - st,stm32mp151-pwr-mcu
               - st,stm32mp157-syscfg
+              - st,stm32mp21-syscfg
+              - st,stm32mp23-syscfg
               - st,stm32mp25-syscfg
           - const: syscon
       - items:
index b6c56d4..5fee2f3 100644 (file)
@@ -51,9 +51,16 @@ properties:
               - st,stm32mp135f-dk
           - const: st,stm32mp135
 
+      - description: ST STM32MP133 based Boards
+        items:
+          - enum:
+              - pri,prihmb   # Priva E-Measuringbox board
+          - const: st,stm32mp133
+
       - description: ST STM32MP151 based Boards
         items:
           - enum:
+              - ply,plyaqm   # Plymovent AQM board
               - prt,mecio1r0 # Protonic MECIO1r0
               - prt,mect1s   # Protonic MECT1S
               - prt,prtt1a   # Protonic PRTT1A
@@ -94,6 +101,8 @@ properties:
       - description: Octavo OSD32MP153 System-in-Package based boards
         items:
           - enum:
+              - lxa,stm32mp153c-fairytux2-gen1 # Linux Automation FairyTux 2 (Generation 1)
+              - lxa,stm32mp153c-fairytux2-gen2 # Linux Automation FairyTux 2 (Generation 2)
               - lxa,stm32mp153c-tac-gen3 # Linux Automation TAC (Generation 3)
           - const: oct,stm32mp153x-osd32
           - const: st,stm32mp153
@@ -178,9 +187,22 @@ properties:
       - description: ST STM32MP257 based Boards
         items:
           - enum:
+              - st,stm32mp257f-dk
               - st,stm32mp257f-ev1
           - const: st,stm32mp257
 
+      - description: ST STM32MP235 based Boards
+        items:
+          - enum:
+              - st,stm32mp235f-dk
+          - const: st,stm32mp235
+
+      - description: ST STM32MP215 based Boards
+        items:
+          - enum:
+              - st,stm32mp215f-dk
+          - const: st,stm32mp215
+
 additionalProperties: true
 
 ...
index 046536d..f536cdd 100644 (file)
@@ -589,6 +589,11 @@ properties:
           - const: emlid,neutis-n5h3
           - const: allwinner,sun8i-h3
 
+      - description: NetCube Systems Kumquat
+        items:
+          - const: netcube,kumquat
+          - const: allwinner,sun8i-v3s
+
       - description: NextThing Co. CHIP
         items:
           - const: nextthing,chip
index 93e04a1..3603edd 100644 (file)
@@ -141,6 +141,13 @@ properties:
           - const: ti,omap4430
           - const: ti,omap4
 
+      - description: OMAP4 PandaBoard Revision A4 and later
+        items:
+          - const: ti,omap4-panda-a4
+          - const: ti,omap4-panda
+          - const: ti,omap4430
+          - const: ti,omap4
+
       - description: OMAP4 DuoVero with Parlor expansion board/daughter board
         items:
           - const: gumstix,omap4-duovero-parlor
index 9952e0e..c923418 100644 (file)
@@ -7,7 +7,6 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Ceva AHCI SATA Controller
 
 maintainers:
-  - Mubin Sayyed <mubin.sayyed@amd.com>
   - Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
 
 description: |
@@ -163,11 +162,9 @@ additionalProperties: false
 
 examples:
   - |
-    #include <dt-bindings/clock/xlnx-zynqmp-clk.h>
     #include <dt-bindings/interrupt-controller/irq.h>
     #include <dt-bindings/power/xlnx-zynqmp-power.h>
     #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
-    #include <dt-bindings/clock/xlnx-zynqmp-clk.h>
     #include <dt-bindings/phy/phy.h>
 
     sata: ahci@fd0c0000 {
@@ -175,7 +172,7 @@ examples:
         reg = <0xfd0c0000 0x200>;
         interrupt-parent = <&gic>;
         interrupts = <0 133 IRQ_TYPE_LEVEL_HIGH>;
-        clocks = <&zynqmp_clk SATA_REF>;
+        clocks = <&zynqmp_clk 22>;
         ceva,p0-cominit-params = /bits/ 8 <0x0F 0x25 0x18 0x29>;
         ceva,p0-comwake-params = /bits/ 8 <0x04 0x0B 0x08 0x0F>;
         ceva,p0-burst-params = /bits/ 8 <0x0A 0x08 0x4A 0x06>;
diff --git a/Bindings/ata/fsl,pq-sata.yaml b/Bindings/ata/fsl,pq-sata.yaml
new file mode 100644 (file)
index 0000000..1d19ee8
--- /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/ata/fsl,pq-sata.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale 8xxx/3.0 Gb/s SATA nodes
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+description:
+  SATA nodes are defined to describe on-chip Serial ATA controllers.
+  Each SATA controller should have its own node.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - fsl,mpc8377-sata
+              - fsl,mpc8536-sata
+              - fsl,mpc8315-sata
+              - fsl,mpc8379-sata
+          - const: fsl,pq-sata
+      - const: fsl,pq-sata-v2
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  cell-index:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [1, 2, 3, 4]
+    description: |
+      1 for controller @ 0x18000
+      2 for controller @ 0x19000
+      3 for controller @ 0x1a000
+      4 for controller @ 0x1b000
+
+required:
+  - compatible
+  - interrupts
+  - cell-index
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    sata@18000 {
+        compatible = "fsl,mpc8379-sata", "fsl,pq-sata";
+        reg = <0x18000 0x1000>;
+        cell-index = <1>;
+        interrupts = <44 IRQ_TYPE_LEVEL_LOW>;
+    };
+
+...
diff --git a/Bindings/ata/fsl-sata.txt b/Bindings/ata/fsl-sata.txt
deleted file mode 100644 (file)
index fd63bb3..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-* Freescale 8xxx/3.0 Gb/s SATA nodes
-
-SATA nodes are defined to describe on-chip Serial ATA controllers.
-Each SATA port should have its own node.
-
-Required properties:
-- compatible        : compatible list, contains 2 entries, first is
-                "fsl,CHIP-sata", where CHIP is the processor
-                (mpc8315, mpc8379, etc.) and the second is
-                "fsl,pq-sata"
-- interrupts        : <interrupt mapping for SATA IRQ>
-- cell-index        : controller index.
-                          1 for controller @ 0x18000
-                          2 for controller @ 0x19000
-                          3 for controller @ 0x1a000
-                          4 for controller @ 0x1b000
-
-Optional properties:
-- reg               : <registers mapping>
-
-Example:
-       sata@18000 {
-               compatible = "fsl,mpc8379-sata", "fsl,pq-sata";
-               reg = <0x18000 0x1000>;
-               cell-index = <1>;
-               interrupts = <2c 8>;
-               interrupt-parent = < &ipic >;
-       };
diff --git a/Bindings/clock/allwinner,sun55i-a523-ccu.yaml b/Bindings/clock/allwinner,sun55i-a523-ccu.yaml
new file mode 100644 (file)
index 0000000..f5f62e9
--- /dev/null
@@ -0,0 +1,103 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/allwinner,sun55i-a523-ccu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner A523 Clock Control Unit
+
+maintainers:
+  - Andre Przywara <andre.przywara@arm.com>
+
+properties:
+  "#clock-cells":
+    const: 1
+
+  "#reset-cells":
+    const: 1
+
+  compatible:
+    enum:
+      - allwinner,sun55i-a523-ccu
+      - allwinner,sun55i-a523-r-ccu
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    minItems: 4
+    maxItems: 5
+
+  clock-names:
+    minItems: 4
+    maxItems: 5
+
+required:
+  - "#clock-cells"
+  - "#reset-cells"
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          enum:
+            - allwinner,sun55i-a523-ccu
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: High Frequency Oscillator (usually at 24MHz)
+            - description: Low Frequency Oscillator (usually at 32kHz)
+            - description: Internal Oscillator
+            - description: Low Frequency Oscillator fanout
+
+        clock-names:
+          items:
+            - const: hosc
+            - const: losc
+            - const: iosc
+            - const: losc-fanout
+
+  - if:
+      properties:
+        compatible:
+          enum:
+            - allwinner,sun55i-a523-r-ccu
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: High Frequency Oscillator (usually at 24MHz)
+            - description: Low Frequency Oscillator (usually at 32kHz)
+            - description: Internal Oscillator
+            - description: Peripherals PLL
+            - description: Audio PLL
+
+        clock-names:
+          items:
+            - const: hosc
+            - const: losc
+            - const: iosc
+            - const: pll-periph
+            - const: pll-audio
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@2001000 {
+        compatible = "allwinner,sun55i-a523-ccu";
+        reg = <0x02001000 0x1000>;
+        clocks = <&osc24M>, <&osc32k>, <&iosc>, <&r_ccu 1>;
+        clock-names = "hosc", "losc", "iosc", "losc-fanout";
+        #clock-cells = <1>;
+        #reset-cells = <1>;
+    };
+
+...
index 885d47d..e803a1f 100644 (file)
@@ -34,6 +34,8 @@ properties:
           - enum:
               - atmel,at91rm9200-pmc
               - atmel,at91sam9260-pmc
+              - atmel,at91sam9261-pmc
+              - atmel,at91sam9263-pmc
               - atmel,at91sam9g45-pmc
               - atmel,at91sam9n12-pmc
               - atmel,at91sam9rl-pmc
@@ -111,6 +113,8 @@ allOf:
             enum:
               - atmel,at91rm9200-pmc
               - atmel,at91sam9260-pmc
+              - atmel,at91sam9261-pmc
+              - atmel,at91sam9263-pmc
               - atmel,at91sam9g20-pmc
     then:
       properties:
index c643d4a..4fec558 100644 (file)
@@ -43,6 +43,13 @@ properties:
       ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx8m-clock.h
       for the full list of i.MX8M clock IDs.
 
+  fsl,operating-mode:
+    $ref: /schemas/types.yaml#/definitions/string
+    enum: [nominal, overdrive]
+    description:
+      The operating mode of the SoC. This affects the maximum clock rates that
+      can safely be configured by the clock controller.
+
 required:
   - compatible
   - reg
@@ -109,6 +116,7 @@ examples:
                  <&clk_ext3>, <&clk_ext4>;
         clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2",
                       "clk_ext3", "clk_ext4";
+        fsl,operating-mode = "nominal";
     };
 
   - |
index 6588a17..0272c95 100644 (file)
@@ -24,8 +24,8 @@ properties:
     maxItems: 1
 
   clocks:
-    minItems: 7
-    maxItems: 7
+    minItems: 8
+    maxItems: 8
 
   clock-names:
     items:
@@ -36,6 +36,7 @@ properties:
       - const: sai5
       - const: sai6
       - const: sai7
+      - const: axi
 
   '#clock-cells':
     const: 1
@@ -72,10 +73,11 @@ examples:
                  <&clk IMX8MP_CLK_SAI3>,
                  <&clk IMX8MP_CLK_SAI5>,
                  <&clk IMX8MP_CLK_SAI6>,
-                 <&clk IMX8MP_CLK_SAI7>;
+                 <&clk IMX8MP_CLK_SAI7>,
+                 <&clk IMX8MP_CLK_AUDIO_AXI_ROOT>;
         clock-names = "ahb",
                       "sai1", "sai2", "sai3",
-                      "sai5", "sai6", "sai7";
+                      "sai5", "sai6", "sai7", "axi";
         power-domains = <&pgc_audio>;
     };
 
index 8605703..2985c8c 100644 (file)
@@ -57,6 +57,27 @@ required:
   - reg
   - '#clock-cells'
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - mediatek,mt8188-camsys-rawa
+              - mediatek,mt8188-camsys-rawb
+              - mediatek,mt8188-camsys-yuva
+              - mediatek,mt8188-camsys-yuvb
+              - mediatek,mt8188-imgsys-wpe1
+              - mediatek,mt8188-imgsys-wpe2
+              - mediatek,mt8188-imgsys-wpe3
+              - mediatek,mt8188-imgsys1-dip-nr
+              - mediatek,mt8188-imgsys1-dip-top
+              - mediatek,mt8188-ipesys
+
+    then:
+      required:
+        - '#reset-cells'
+
 additionalProperties: false
 
 examples:
index ba7ffc5..83c1803 100644 (file)
@@ -18,6 +18,12 @@ description: |
   These SoCs have an XTAL from where the cpu clock is
   provided as well as derived clocks for the bus and the peripherals.
 
+  Each clock is assigned an identifier and client nodes use this identifier
+  to specify the clock which they consume.
+
+  All these identifiers could be found in:
+  [1]: <include/dt-bindings/clock/mediatek,mtmips-sysc.h>.
+
 properties:
   compatible:
     items:
@@ -38,7 +44,8 @@ properties:
 
   '#clock-cells':
     description:
-      The first cell indicates the clock number.
+      The first cell indicates the clock number, see [1] for available
+      clocks.
     const: 1
 
   '#reset-cells':
@@ -56,6 +63,8 @@ additionalProperties: false
 
 examples:
   - |
+    #include <dt-bindings/clock/mediatek,mtmips-sysc.h>
+
     syscon@0 {
       compatible = "ralink,rt5350-sysc", "syscon";
       reg = <0x0 0x100>;
diff --git a/Bindings/clock/qcom,ipq9574-nsscc.yaml b/Bindings/clock/qcom,ipq9574-nsscc.yaml
new file mode 100644 (file)
index 0000000..17252b6
--- /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/clock/qcom,ipq9574-nsscc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Networking Sub System Clock & Reset Controller on IPQ9574
+
+maintainers:
+  - Bjorn Andersson <andersson@kernel.org>
+  - Anusha Rao <quic_anusha@quicinc.com>
+
+description: |
+  Qualcomm networking sub system clock control module provides the clocks,
+  resets on IPQ9574
+
+  See also::
+    include/dt-bindings/clock/qcom,ipq9574-nsscc.h
+    include/dt-bindings/reset/qcom,ipq9574-nsscc.h
+
+properties:
+  compatible:
+    const: qcom,ipq9574-nsscc
+
+  clocks:
+    items:
+      - description: Board XO source
+      - description: CMN_PLL NSS 1200MHz (Bias PLL cc) clock source
+      - description: CMN_PLL PPE 353MHz (Bias PLL ubi nc) clock source
+      - description: GCC GPLL0 OUT AUX clock source
+      - description: Uniphy0 NSS Rx clock source
+      - description: Uniphy0 NSS Tx clock source
+      - description: Uniphy1 NSS Rx clock source
+      - description: Uniphy1 NSS Tx clock source
+      - description: Uniphy2 NSS Rx clock source
+      - description: Uniphy2 NSS Tx clock source
+      - description: GCC NSSCC clock source
+
+  '#interconnect-cells':
+    const: 1
+
+  clock-names:
+    items:
+      - const: xo
+      - const: nss_1200
+      - const: ppe_353
+      - const: gpll0_out
+      - const: uniphy0_rx
+      - const: uniphy0_tx
+      - const: uniphy1_rx
+      - const: uniphy1_tx
+      - const: uniphy2_rx
+      - const: uniphy2_tx
+      - const: bus
+
+required:
+  - compatible
+  - clocks
+  - clock-names
+
+allOf:
+  - $ref: qcom,gcc.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,ipq9574-gcc.h>
+    #include <dt-bindings/clock/qcom,ipq-cmn-pll.h>
+    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>,
+               <&uniphy 0>,
+               <&uniphy 1>,
+               <&uniphy 2>,
+               <&uniphy 3>,
+               <&uniphy 4>,
+               <&uniphy 5>,
+               <&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>;
+    };
+...
index be3835e..90cd3fe 100644 (file)
@@ -44,6 +44,7 @@ properties:
           - qcom,rpmcc-msm8998
           - qcom,rpmcc-qcm2290
           - qcom,rpmcc-qcs404
+          - qcom,rpmcc-sdm429
           - qcom,rpmcc-sdm660
           - qcom,rpmcc-sm6115
           - qcom,rpmcc-sm6125
@@ -123,6 +124,7 @@ allOf:
               - qcom,rpmcc-msm8998
               - qcom,rpmcc-qcm2290
               - qcom,rpmcc-qcs404
+              - qcom,rpmcc-sdm429
               - qcom,rpmcc-sdm660
               - qcom,rpmcc-sm6115
               - qcom,rpmcc-sm6125
index 488d639..99ab910 100644 (file)
@@ -20,6 +20,7 @@ description: |
 properties:
   compatible:
     enum:
+      - qcom,qcm6490-lpassaudiocc
       - qcom,sc7280-lpassaoncc
       - qcom,sc7280-lpassaudiocc
       - qcom,sc7280-lpasscorecc
@@ -68,7 +69,9 @@ allOf:
       properties:
         compatible:
           contains:
-            const: qcom,sc7280-lpassaudiocc
+            enum:
+              - qcom,qcm6490-lpassaudiocc
+              - qcom,sc7280-lpassaudiocc
 
     then:
       properties:
index b88b6c9..9e79f8f 100644 (file)
@@ -64,7 +64,6 @@ allOf:
               - qcom,sc8280xp-camcc
               - qcom,sm8450-camcc
               - qcom,sm8550-camcc
-              - qcom,x1e80100-camcc
     then:
       required:
         - required-opps
index 5bbbaa1..938a2f1 100644 (file)
@@ -40,9 +40,9 @@ properties:
       - description: A phandle to the MMCX power-domain
 
   required-opps:
-    maxItems: 1
-    description:
-      A phandle to an OPP node describing MMCX performance points.
+    items:
+      - description: A phandle to an OPP node describing MXC performance points
+      - description: A phandle to an OPP node describing MMCX performance points
 
 required:
   - compatible
@@ -66,7 +66,8 @@ examples:
                <&sleep_clk>;
       power-domains = <&rpmhpd RPMHPD_MXC>,
                       <&rpmhpd RPMHPD_MMCX>;
-      required-opps = <&rpmhpd_opp_low_svs>;
+      required-opps = <&rpmhpd_opp_low_svs>,
+                      <&rpmhpd_opp_low_svs>;
       #clock-cells = <1>;
       #reset-cells = <1>;
       #power-domain-cells = <1>;
diff --git a/Bindings/clock/rockchip,rk3528-cru.yaml b/Bindings/clock/rockchip,rk3528-cru.yaml
new file mode 100644 (file)
index 0000000..5a3ec90
--- /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/clock/rockchip,rk3528-cru.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip RK3528 Clock and Reset Controller
+
+maintainers:
+  - Yao Zi <ziyao@disroot.org>
+
+description: |
+  The RK3528 clock controller generates the clock and also implements a reset
+  controller for SoC peripherals. For example, it provides SCLK_UART0 and
+  PCLK_UART0 as well as SRST_P_UART0 and SRST_S_UART0 for the first UART
+  module.
+  Each clock is assigned an identifier, consumer nodes can use it to specify
+  the clock. All available clock and reset IDs are defined in dt-binding
+  headers.
+
+properties:
+  compatible:
+    const: rockchip,rk3528-cru
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: External 24MHz oscillator clock
+      - description: >
+          50MHz clock generated by PHY module, for generating GMAC0 clocks only.
+
+  clock-names:
+    items:
+      - const: xin24m
+      - const: gmac0
+
+  "#clock-cells":
+    const: 1
+
+  "#reset-cells":
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - "#clock-cells"
+  - "#reset-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@ff4a0000 {
+        compatible = "rockchip,rk3528-cru";
+        reg = <0xff4a0000 0x30000>;
+        clocks = <&xin24m>, <&gmac0_clk>;
+        clock-names = "xin24m", "gmac0";
+        #clock-cells = <1>;
+        #reset-cells = <1>;
+    };
diff --git a/Bindings/clock/rockchip,rk3562-cru.yaml b/Bindings/clock/rockchip,rk3562-cru.yaml
new file mode 100644 (file)
index 0000000..36a353f
--- /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/clock/rockchip,rk3562-cru.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip rk3562 Clock and Reset Control Module
+
+maintainers:
+  - Elaine Zhang <zhangqing@rock-chips.com>
+  - Heiko Stuebner <heiko@sntech.de>
+
+description:
+  The RK3562 clock controller generates the clock and also implements a reset
+  controller for SoC peripherals. For example it provides SCLK_UART2 and
+  PCLK_UART2, as well as SRST_P_UART2 and SRST_S_UART2 for the second UART
+  module.
+
+properties:
+  compatible:
+    const: rockchip,rk3562-cru
+
+  reg:
+    maxItems: 1
+
+  "#clock-cells":
+    const: 1
+
+  "#reset-cells":
+    const: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: xin24m
+      - const: xin32k
+
+required:
+  - compatible
+  - reg
+  - "#clock-cells"
+  - "#reset-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@ff100000 {
+      compatible = "rockchip,rk3562-cru";
+      reg = <0xff100000 0x40000>;
+      #clock-cells = <1>;
+      #reset-cells = <1>;
+    };
diff --git a/Bindings/clock/samsung,exynos2200-cmu.yaml b/Bindings/clock/samsung,exynos2200-cmu.yaml
new file mode 100644 (file)
index 0000000..89433e6
--- /dev/null
@@ -0,0 +1,247 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/samsung,exynos2200-cmu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Samsung Exynos2200 SoC clock controller
+
+maintainers:
+  - Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
+  - Chanwoo Choi <cw00.choi@samsung.com>
+  - Krzysztof Kozlowski <krzk@kernel.org>
+
+description: |
+  Exynos2200 clock controller is comprised of several CMU units, generating
+  clocks for different domains. Those CMU units are modeled as separate device
+  tree nodes, and might depend on each other. The root clocks in that root tree
+  are two external clocks: XTCXO (76.8 MHz) and RTCCLK (32768 Hz). XTCXO must be
+  defined as a fixed-rate clock in dts, whereas RTCCLK originates from PMIC.
+
+  CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
+  dividers; all other clocks of function blocks (other CMUs) are usually
+  derived from CMU_TOP.
+
+  Each clock is assigned an identifier and client nodes can use this identifier
+  to specify the clock which they consume. All clocks available for usage
+  in clock consumer nodes are defined as preprocessor macros in
+  'include/dt-bindings/clock/samsung,exynos2200-cmu.h' header.
+
+properties:
+  compatible:
+    enum:
+      - samsung,exynos2200-cmu-alive
+      - samsung,exynos2200-cmu-cmgp
+      - samsung,exynos2200-cmu-hsi0
+      - samsung,exynos2200-cmu-peric0
+      - samsung,exynos2200-cmu-peric1
+      - samsung,exynos2200-cmu-peric2
+      - samsung,exynos2200-cmu-peris
+      - samsung,exynos2200-cmu-top
+      - samsung,exynos2200-cmu-ufs
+      - samsung,exynos2200-cmu-vts
+
+  clocks:
+    minItems: 1
+    maxItems: 6
+
+  clock-names:
+    minItems: 1
+    maxItems: 6
+
+  "#clock-cells":
+    const: 1
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - clocks
+  - clock-names
+  - reg
+  - "#clock-cells"
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos2200-cmu-alive
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (76.8 MHz)
+            - description: CMU_ALIVE NOC clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: noc
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos2200-cmu-cmgp
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (76.8 MHz)
+            - description: CMU_CMGP NOC clock (from CMU_TOP)
+            - description: CMU_CMGP PERI clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: noc
+            - const: peri
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos2200-cmu-hsi0
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (76.8 MHz)
+            - description: External RTC clock (32768 Hz)
+            - description: CMU_HSI0 NOC clock (from CMU_TOP)
+            - description: CMU_HSI0 DPGTC clock (from CMU_TOP)
+            - description: CMU_HSI0 DPOSC clock (from CMU_TOP)
+            - description: CMU_HSI0 USB32DRD clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: rtcclk
+            - const: noc
+            - const: dpgtc
+            - const: dposc
+            - const: usb
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - samsung,exynos2200-cmu-peric0
+              - samsung,exynos2200-cmu-peric1
+              - samsung,exynos2200-cmu-peric2
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (76.8 MHz)
+            - description: CMU_PERICn NOC clock (from CMU_TOP)
+            - description: CMU_PERICn IP0 clock (from CMU_TOP)
+            - description: CMU_PERICn IP1 clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: noc
+            - const: ip0
+            - const: ip1
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos2200-cmu-peris
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (25.6 MHz)
+            - description: CMU_PERIS NOC clock (from CMU_TOP)
+            - description: CMU_PERIS GIC clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: tcxo_div3
+            - const: noc
+            - const: gic
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos2200-cmu-top
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (76.8 MHz)
+
+        clock-names:
+          items:
+            - const: oscclk
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos2200-cmu-ufs
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (76.8 MHz)
+            - description: CMU_UFS NOC clock (from CMU_TOP)
+            - description: CMU_UFS MMC clock (from CMU_TOP)
+            - description: CMU_UFS UFS clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: noc
+            - const: mmc
+            - const: ufs
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos2200-cmu-vts
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (76.8 MHz)
+            - description: CMU_VTS DMIC clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: dmic
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/samsung,exynos2200-cmu.h>
+
+    cmu_vts: clock-controller@15300000 {
+        compatible = "samsung,exynos2200-cmu-vts";
+        reg = <0x15300000 0x8000>;
+        #clock-cells = <1>;
+
+        clocks = <&oscclk>,
+                 <&cmu_top CLK_DOUT_CMU_VTS_DMIC>;
+        clock-names = "oscclk", "dmic";
+    };
+
+...
diff --git a/Bindings/clock/samsung,exynos7870-cmu.yaml b/Bindings/clock/samsung,exynos7870-cmu.yaml
new file mode 100644 (file)
index 0000000..3c58712
--- /dev/null
@@ -0,0 +1,227 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/samsung,exynos7870-cmu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Samsung Exynos7870 SoC clock controller
+
+maintainers:
+  - Kaustabh Chakraborty <kauschluss@disroot.org>
+
+description: |
+  Exynos7870 clock controller is comprised of several CMU units, generating
+  clocks for different domains. Those CMU units are modeled as separate device
+  tree nodes, and might depend on each other. The root clock in that root tree
+  is an external clock: OSCCLK (26 MHz). This external clock must be defined
+  as a fixed-rate clock in dts.
+
+  Each clock is assigned an identifier and client nodes can use this identifier
+  to specify the clock which they consume. All clocks available for usage
+  in clock consumer nodes are defined as preprocessor macros in
+  include/dt-bindings/clock/samsung,exynos7870-cmu.h header.
+
+properties:
+  compatible:
+    enum:
+      - samsung,exynos7870-cmu-mif
+      - samsung,exynos7870-cmu-dispaud
+      - samsung,exynos7870-cmu-fsys
+      - samsung,exynos7870-cmu-g3d
+      - samsung,exynos7870-cmu-isp
+      - samsung,exynos7870-cmu-mfcmscl
+      - samsung,exynos7870-cmu-peri
+
+  clocks:
+    minItems: 1
+    maxItems: 10
+
+  clock-names:
+    minItems: 1
+    maxItems: 10
+
+  "#clock-cells":
+    const: 1
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - clocks
+  - clock-names
+  - "#clock-cells"
+  - reg
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos7870-cmu-mif
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (26 MHz)
+
+        clock-names:
+          items:
+            - const: oscclk
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos7870-cmu-dispaud
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (26 MHz)
+            - description: CMU_DISPAUD bus clock (from CMU_MIF)
+            - description: DECON external clock (from CMU_MIF)
+            - description: DECON vertical clock (from CMU_MIF)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: bus
+            - const: decon_eclk
+            - const: decon_vclk
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos7870-cmu-fsys
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (26 MHz)
+            - description: CMU_FSYS bus clock (from CMU_MIF)
+            - description: USB20DRD clock (from CMU_MIF)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: bus
+            - const: usb20drd
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos7870-cmu-g3d
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (26 MHz)
+            - description: G3D switch clock (from CMU_MIF)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: switch
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos7870-cmu-isp
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (26 MHz)
+            - description: ISP camera clock (from CMU_MIF)
+            - description: ISP clock (from CMU_MIF)
+            - description: ISP VRA clock (from CMU_MIF)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: cam
+            - const: isp
+            - const: vra
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos7870-cmu-mfcmscl
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (26 MHz)
+            - description: MSCL clock (from CMU_MIF)
+            - description: MFC clock (from CMU_MIF)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: mfc
+            - const: mscl
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos7870-cmu-peri
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (26 MHz)
+            - description: CMU_PERI bus clock (from CMU_MIF)
+            - description: SPI0 clock (from CMU_MIF)
+            - description: SPI1 clock (from CMU_MIF)
+            - description: SPI2 clock (from CMU_MIF)
+            - description: SPI3 clock (from CMU_MIF)
+            - description: SPI4 clock (from CMU_MIF)
+            - description: UART0 clock (from CMU_MIF)
+            - description: UART1 clock (from CMU_MIF)
+            - description: UART2 clock (from CMU_MIF)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: bus
+            - const: spi0
+            - const: spi1
+            - const: spi2
+            - const: spi3
+            - const: spi4
+            - const: uart0
+            - const: uart1
+            - const: uart2
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/samsung,exynos7870-cmu.h>
+
+    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>;
+    };
+
+...
index 9e7944b..c15cc17 100644 (file)
@@ -31,6 +31,7 @@ properties:
   compatible:
     enum:
       - samsung,exynos990-cmu-hsi0
+      - samsung,exynos990-cmu-peris
       - samsung,exynos990-cmu-top
 
   clocks:
@@ -79,6 +80,24 @@ allOf:
             - const: usbdp_debug
             - const: dpgtc
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos990-cmu-peris
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (26 MHz)
+            - description: CMU_PERIS BUS clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: bus
+
   - if:
       properties:
         compatible:
diff --git a/Bindings/clock/ti,clkctrl.yaml b/Bindings/clock/ti,clkctrl.yaml
new file mode 100644 (file)
index 0000000..4978755
--- /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/clock/ti,clkctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments clkctrl clock
+
+maintainers:
+  - Tony Lindgren <tony@atomide.com>
+  - Andreas Kemnade <andreas@kemnade.info>
+
+description: |
+  Texas Instruments SoCs can have a clkctrl clock controller for each
+  interconnect target module. The clkctrl clock controller manages functional
+  and interface clocks for each module. Each clkctrl controller can also
+  gate one or more optional functional clocks for a module, and can have one
+  or more clock muxes. There is a clkctrl clock controller typically for each
+  interconnect target module on omap4 and later variants.
+
+  The clock consumers can specify the index of the clkctrl clock using
+  the hardware offset from the clkctrl instance register space. The optional
+  clocks can be specified by clkctrl hardware offset and the index of the
+  optional clock.
+
+properties:
+  compatible:
+    enum:
+      - ti,clkctrl
+      - ti,clkctrl-l4-cfg
+      - ti,clkctrl-l4-per
+      - ti,clkctrl-l4-secure
+      - ti,clkctrl-l4-wkup
+
+  "#clock-cells":
+    const: 2
+
+  clock-output-names:
+    maxItems: 1
+
+  reg:
+    minItems: 1
+    maxItems: 8 # arbitrary, should be enough
+
+required:
+  - compatible
+  - "#clock-cells"
+  - clock-output-names
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    bus {
+      #address-cells = <1>;
+      #size-cells = <1>;
+
+      clock@20 {
+        compatible = "ti,clkctrl";
+        clock-output-names = "l4_per";
+        reg = <0x20 0x1b0>;
+        #clock-cells = <2>;
+      };
+    };
diff --git a/Bindings/clock/ti-clkctrl.txt b/Bindings/clock/ti-clkctrl.txt
deleted file mode 100644 (file)
index d20db79..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-Texas Instruments clkctrl clock binding
-
-Texas Instruments SoCs can have a clkctrl clock controller for each
-interconnect target module. The clkctrl clock controller manages functional
-and interface clocks for each module. Each clkctrl controller can also
-gate one or more optional functional clocks for a module, and can have one
-or more clock muxes. There is a clkctrl clock controller typically for each
-interconnect target module on omap4 and later variants.
-
-The clock consumers can specify the index of the clkctrl clock using
-the hardware offset from the clkctrl instance register space. The optional
-clocks can be specified by clkctrl hardware offset and the index of the
-optional clock.
-
-For more information, please see the Linux clock framework binding at
-Documentation/devicetree/bindings/clock/clock-bindings.txt.
-
-Required properties :
-- compatible : shall be "ti,clkctrl" or a clock domain specific name:
-              "ti,clkctrl-l4-cfg"
-              "ti,clkctrl-l4-per"
-              "ti,clkctrl-l4-secure"
-              "ti,clkctrl-l4-wkup"
-- clock-output-names : from common clock binding
-- #clock-cells : shall contain 2 with the first entry being the instance
-                offset from the clock domain base and the second being the
-                clock index
-- reg : clock registers
-
-Example: Clock controller node on omap 4430:
-
-&cm2 {
-       l4per: cm@1400 {
-               cm_l4per@0 {
-                       cm_l4per_clkctrl: clock@20 {
-                               compatible = "ti,clkctrl";
-                               clock-output-names = "l4_per";
-                               reg = <0x20 0x1b0>;
-                               #clock-cells = <2>;
-                       };
-               };
-       };
-};
-
-Example: Preprocessor helper macros in dt-bindings/clock/ti-clkctrl.h
-
-#define OMAP4_CLKCTRL_OFFSET           0x20
-#define OMAP4_CLKCTRL_INDEX(offset)    ((offset) - OMAP4_CLKCTRL_OFFSET)
-#define MODULEMODE_HWCTRL              1
-#define MODULEMODE_SWCTRL              2
-
-#define OMAP4_GPTIMER10_CLKTRL         OMAP4_CLKCTRL_INDEX(0x28)
-#define OMAP4_GPTIMER11_CLKTRL         OMAP4_CLKCTRL_INDEX(0x30)
-#define OMAP4_GPTIMER2_CLKTRL          OMAP4_CLKCTRL_INDEX(0x38)
-...
-#define OMAP4_GPIO2_CLKCTRL            OMAP_CLKCTRL_INDEX(0x60)
-
-Example: Clock consumer node for GPIO2:
-
-&gpio2 {
-       clocks = <&cm_l4per_clkctrl OMAP4_GPIO2_CLKCTRL 0
-                &cm_l4per_clkctrl OMAP4_GPIO2_CLKCTRL 8>;
-};
diff --git a/Bindings/connector/gocontroll,moduline-module-slot.yaml b/Bindings/connector/gocontroll,moduline-module-slot.yaml
new file mode 100644 (file)
index 0000000..a16ae27
--- /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/connector/gocontroll,moduline-module-slot.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: GOcontroll Moduline Module slot
+
+maintainers:
+  - Maud Spierings <maudspierings@gocontroll.com>
+
+description:
+  The GOcontroll Moduline module slot represents a connector that fullfills the
+  Moduline slot specification, and can thus house any IO module that is also
+  built to this spec.
+
+properties:
+  compatible:
+    const: gocontroll,moduline-module-slot
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    description: indicates readiness, high means busy.
+    maxItems: 1
+  reset-gpios:
+    description: resets the module, active low.
+    maxItems: 1
+  sync-gpios:
+    description: sync line between all module slots.
+    maxItems: 1
+
+  vdd-supply:
+    description: low power 3v3 supply generally for the microcontroller.
+  vddp-supply:
+    description: medium power 5v0 supply for on module low power peripherals.
+  vddhpp-supply:
+    description: high power 6v-8v supply for on module high power peripherals.
+  power-supply:
+    description: high power 6v-30v supply for high power module circuits.
+
+  i2c-bus:
+    description: i2c bus shared between module slots and the SoC
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+  slot-number:
+    description:
+      The number of the module slot representing the location of on the pcb.
+      This enables access to the modules based on slot location.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  spi-max-frequency: true
+
+required:
+  - compatible
+  - reg
+  - reset-gpios
+  - interrupts
+  - sync-gpios
+  - i2c-bus
+  - slot-number
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        connector@0 {
+            reg = <0>;
+            compatible = "gocontroll,moduline-module-slot";
+            reset-gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
+            sync-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>;
+            interrupt-parent = <&gpio4>;
+            interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
+            vdd-supply = <&reg_3v3_per>;
+            vddp-supply = <&reg_5v0>;
+            vddhpp-supply = <&reg_6v4>;
+            i2c-bus = <&i2c2>;
+            slot-number = <1>;
+        };
+    };
index e937eb7..e0242be 100644 (file)
@@ -34,6 +34,7 @@ properties:
       - description: v2 of CPUFREQ HW (EPSS)
         items:
           - enum:
+              - qcom,qcs8300-cpufreq-epss
               - qcom,qdu1000-cpufreq-epss
               - qcom,sa8255p-cpufreq-epss
               - qcom,sa8775p-cpufreq-epss
@@ -111,22 +112,20 @@ allOf:
             enum:
               - qcom,qcm2290-cpufreq-hw
               - qcom,sar2130p-cpufreq-epss
+              - qcom,sdx75-cpufreq-epss
     then:
       properties:
         reg:
-          minItems: 1
           maxItems: 1
 
         reg-names:
-          minItems: 1
           maxItems: 1
 
         interrupts:
-          minItems: 1
           maxItems: 1
 
         interrupt-names:
-          minItems: 1
+          maxItems: 1
 
   - if:
       properties:
@@ -135,6 +134,7 @@ allOf:
             enum:
               - qcom,qdu1000-cpufreq-epss
               - qcom,sa8255p-cpufreq-epss
+              - qcom,sa8775p-cpufreq-epss
               - qcom,sc7180-cpufreq-hw
               - qcom,sc8180x-cpufreq-hw
               - qcom,sc8280xp-cpufreq-epss
@@ -160,12 +160,14 @@ allOf:
 
         interrupt-names:
           minItems: 2
+          maxItems: 2
 
   - if:
       properties:
         compatible:
           contains:
             enum:
+              - qcom,qcs8300-cpufreq-epss
               - qcom,sc7280-cpufreq-epss
               - qcom,sm8250-cpufreq-epss
               - qcom,sm8350-cpufreq-epss
@@ -187,6 +189,7 @@ allOf:
 
         interrupt-names:
           minItems: 3
+          maxItems: 3
 
   - if:
       properties:
@@ -211,7 +214,31 @@ allOf:
 
         interrupt-names:
           minItems: 2
+          maxItems: 2
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,sm8650-cpufreq-epss
+    then:
+      properties:
+        reg:
+          minItems: 4
+          maxItems: 4
+
+        reg-names:
+          minItems: 4
+          maxItems: 4
+
+        interrupts:
+          minItems: 4
+          maxItems: 4
+
+        interrupt-names:
+          minItems: 4
+          maxItems: 4
 
 examples:
   - |
diff --git a/Bindings/crypto/fsl,sec2.0.yaml b/Bindings/crypto/fsl,sec2.0.yaml
new file mode 100644 (file)
index 0000000..2091b89
--- /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/crypto/fsl,sec2.0.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale SoC SEC Security Engines versions 1.x-2.x-3.x
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+properties:
+  compatible:
+    description:
+      Should contain entries for this and backward compatible SEC versions,
+      high to low. Warning - SEC1 and SEC2 are mutually exclusive.
+    oneOf:
+      - items:
+          - const: fsl,sec3.3
+          - const: fsl,sec3.1
+          - const: fsl,sec3.0
+          - const: fsl,sec2.4
+          - const: fsl,sec2.2
+          - const: fsl,sec2.1
+          - const: fsl,sec2.0
+      - items:
+          - const: fsl,sec3.1
+          - const: fsl,sec3.0
+          - const: fsl,sec2.4
+          - const: fsl,sec2.2
+          - const: fsl,sec2.1
+          - const: fsl,sec2.0
+      - items:
+          - const: fsl,sec3.0
+          - const: fsl,sec2.4
+          - const: fsl,sec2.2
+          - const: fsl,sec2.1
+          - const: fsl,sec2.0
+      - items:
+          - const: fsl,sec2.4
+          - const: fsl,sec2.2
+          - const: fsl,sec2.1
+          - const: fsl,sec2.0
+      - items:
+          - const: fsl,sec2.2
+          - const: fsl,sec2.1
+          - const: fsl,sec2.0
+      - items:
+          - const: fsl,sec2.1
+          - const: fsl,sec2.0
+      - items:
+          - const: fsl,sec2.0
+      - items:
+          - const: fsl,sec1.2
+          - const: fsl,sec1.0
+      - items:
+          - const: fsl,sec1.0
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  fsl,num-channels:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [ 1, 4 ]
+    description: An integer representing the number of channels available.
+
+  fsl,channel-fifo-len:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    maximum: 100
+    description:
+      An integer representing the number of descriptor pointers each channel
+      fetch fifo can hold.
+
+  fsl,exec-units-mask:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    maximum: 0xfff
+    description: |
+      The bitmask representing what execution units (EUs) are available.
+      EU information should be encoded following the SEC's Descriptor Header
+      Dword EU_SEL0 field documentation, i.e. as follows:
+
+        bit 0  = reserved - should be 0
+        bit 1  = set if SEC has the ARC4 EU (AFEU)
+        bit 2  = set if SEC has the DES/3DES EU (DEU)
+        bit 3  = set if SEC has the message digest EU (MDEU/MDEU-A)
+        bit 4  = set if SEC has the random number generator EU (RNG)
+        bit 5  = set if SEC has the public key EU (PKEU)
+        bit 6  = set if SEC has the AES EU (AESU)
+        bit 7  = set if SEC has the Kasumi EU (KEU)
+        bit 8  = set if SEC has the CRC EU (CRCU)
+        bit 11 = set if SEC has the message digest EU extended alg set (MDEU-B)
+
+      remaining bits are reserved for future SEC EUs.
+
+  fsl,descriptor-types-mask:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: |
+      The bitmask representing what descriptors are available. Descriptor type
+      information should be encoded following the SEC's Descriptor Header Dword
+      DESC_TYPE field documentation, i.e. as follows:
+
+        bit 0  = SEC supports descriptor type aesu_ctr_nonsnoop
+        bit 1  = SEC supports descriptor type ipsec_esp
+        bit 2  = SEC supports descriptor type common_nonsnoop
+        bit 3  = SEC supports descriptor type 802.11i AES ccmp
+        bit 4  = SEC supports descriptor type hmac_snoop_no_afeu
+        bit 5  = SEC supports descriptor type srtp
+        bit 6  = SEC supports descriptor type non_hmac_snoop_no_afeu
+        bit 7  = SEC supports descriptor type pkeu_assemble
+        bit 8  = SEC supports descriptor type aesu_key_expand_output
+        bit 9  = SEC supports descriptor type pkeu_ptmul
+        bit 10 = SEC supports descriptor type common_nonsnoop_afeu
+        bit 11 = SEC supports descriptor type pkeu_ptadd_dbl
+
+      ..and so on and so forth.
+
+required:
+  - compatible
+  - reg
+  - fsl,num-channels
+  - fsl,channel-fifo-len
+  - fsl,exec-units-mask
+  - fsl,descriptor-types-mask
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    /* MPC8548E */
+    crypto@30000 {
+        compatible = "fsl,sec2.1", "fsl,sec2.0";
+        reg = <0x30000 0x10000>;
+        interrupts = <29 2>;
+        interrupt-parent = <&mpic>;
+        fsl,num-channels = <4>;
+        fsl,channel-fifo-len = <24>;
+        fsl,exec-units-mask = <0xfe>;
+        fsl,descriptor-types-mask = <0x12b0ebf>;
+    };
+
+...
diff --git a/Bindings/crypto/fsl-sec2.txt b/Bindings/crypto/fsl-sec2.txt
deleted file mode 100644 (file)
index 125f155..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-Freescale SoC SEC Security Engines versions 1.x-2.x-3.x
-
-Required properties:
-
-- compatible : Should contain entries for this and backward compatible
-  SEC versions, high to low, e.g., "fsl,sec2.1", "fsl,sec2.0" (SEC2/3)
-                             e.g., "fsl,sec1.2", "fsl,sec1.0" (SEC1)
-    warning: SEC1 and SEC2 are mutually exclusive
-- reg : Offset and length of the register set for the device
-- interrupts : the SEC's interrupt number
-- fsl,num-channels : An integer representing the number of channels
-  available.
-- fsl,channel-fifo-len : An integer representing the number of
-  descriptor pointers each channel fetch fifo can hold.
-- fsl,exec-units-mask : The bitmask representing what execution units
-  (EUs) are available. It's a single 32-bit cell. EU information
-  should be encoded following the SEC's Descriptor Header Dword
-  EU_SEL0 field documentation, i.e. as follows:
-
-       bit 0  = reserved - should be 0
-       bit 1  = set if SEC has the ARC4 EU (AFEU)
-       bit 2  = set if SEC has the DES/3DES EU (DEU)
-       bit 3  = set if SEC has the message digest EU (MDEU/MDEU-A)
-       bit 4  = set if SEC has the random number generator EU (RNG)
-       bit 5  = set if SEC has the public key EU (PKEU)
-       bit 6  = set if SEC has the AES EU (AESU)
-       bit 7  = set if SEC has the Kasumi EU (KEU)
-       bit 8  = set if SEC has the CRC EU (CRCU)
-       bit 11 = set if SEC has the message digest EU extended alg set (MDEU-B)
-
-remaining bits are reserved for future SEC EUs.
-
-- fsl,descriptor-types-mask : The bitmask representing what descriptors
-  are available. It's a single 32-bit cell. Descriptor type information
-  should be encoded following the SEC's Descriptor Header Dword DESC_TYPE
-  field documentation, i.e. as follows:
-
-       bit 0  = set if SEC supports the aesu_ctr_nonsnoop desc. type
-       bit 1  = set if SEC supports the ipsec_esp descriptor type
-       bit 2  = set if SEC supports the common_nonsnoop desc. type
-       bit 3  = set if SEC supports the 802.11i AES ccmp desc. type
-       bit 4  = set if SEC supports the hmac_snoop_no_afeu desc. type
-       bit 5  = set if SEC supports the srtp descriptor type
-       bit 6  = set if SEC supports the non_hmac_snoop_no_afeu desc.type
-       bit 7  = set if SEC supports the pkeu_assemble descriptor type
-       bit 8  = set if SEC supports the aesu_key_expand_output desc.type
-       bit 9  = set if SEC supports the pkeu_ptmul descriptor type
-       bit 10 = set if SEC supports the common_nonsnoop_afeu desc. type
-       bit 11 = set if SEC supports the pkeu_ptadd_dbl descriptor type
-
-  ..and so on and so forth.
-
-Example:
-
-       /* MPC8548E */
-       crypto@30000 {
-               compatible = "fsl,sec2.1", "fsl,sec2.0";
-               reg = <0x30000 0x10000>;
-               interrupts = <29 2>;
-               interrupt-parent = <&mpic>;
-               fsl,num-channels = <4>;
-               fsl,channel-fifo-len = <24>;
-               fsl,exec-units-mask = <0xfe>;
-               fsl,descriptor-types-mask = <0x12b0ebf>;
-       };
diff --git a/Bindings/crypto/inside-secure,safexcel-eip93.yaml b/Bindings/crypto/inside-secure,safexcel-eip93.yaml
new file mode 100644 (file)
index 0000000..997bf97
--- /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/crypto/inside-secure,safexcel-eip93.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Inside Secure SafeXcel EIP-93 cryptographic engine
+
+maintainers:
+  - Christian Marangi <ansuelsmth@gmail.com>
+
+description: |
+  The Inside Secure SafeXcel EIP-93 is a cryptographic engine IP block
+  integrated in varios devices with very different and generic name from
+  PKTE to simply vendor+EIP93. The real IP under the hood is actually
+  developed by Inside Secure and given to license to vendors.
+
+  The IP block is sold with different model based on what feature are
+  needed and are identified with the final letter. Each letter correspond
+  to a specific set of feature and multiple letter reflect the sum of the
+  feature set.
+
+  EIP-93 models:
+    - EIP-93i: (basic) DES/Triple DES, AES, PRNG, IPsec ESP, SRTP, SHA1
+    - EIP-93ie: i + SHA224/256, AES-192/256
+    - EIP-93is: i + SSL/DTLS/DTLS, MD5, ARC4
+    - EIP-93ies: i + e + s
+    - EIP-93iw: i + AES-XCB-MAC, AES-CCM
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: airoha,en7581-eip93
+          - const: inside-secure,safexcel-eip93ies
+      - items:
+          - not: {}
+            description: Need a SoC specific compatible
+          - enum:
+              - inside-secure,safexcel-eip93i
+              - inside-secure,safexcel-eip93ie
+              - inside-secure,safexcel-eip93is
+              - inside-secure,safexcel-eip93iw
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    crypto@1e004000 {
+      compatible = "airoha,en7581-eip93", "inside-secure,safexcel-eip93ies";
+      reg = <0x1fb70000 0x1000>;
+
+      interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+    };
index ef07258..343e2d0 100644 (file)
@@ -47,6 +47,8 @@ properties:
       - const: core
       - const: reg
 
+  dma-coherent: true
+
 required:
   - reg
   - interrupts
index 5e6f8b6..ed7e16b 100644 (file)
@@ -20,6 +20,7 @@ properties:
               - qcom,ipq5332-trng
               - qcom,ipq5424-trng
               - qcom,ipq9574-trng
+              - qcom,qcs615-trng
               - qcom,qcs8300-trng
               - qcom,sa8255p-trng
               - qcom,sa8775p-trng
index 3ed56d9..3f35122 100644 (file)
@@ -55,6 +55,7 @@ properties:
               - qcom,sm8550-qce
               - qcom,sm8650-qce
               - qcom,sm8750-qce
+              - qcom,x1e80100-qce
           - const: qcom,sm8150-qce
           - const: qcom,qce
 
diff --git a/Bindings/display/apple,h7-display-pipe-mipi.yaml b/Bindings/display/apple,h7-display-pipe-mipi.yaml
new file mode 100644 (file)
index 0000000..5e6da66
--- /dev/null
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/apple,h7-display-pipe-mipi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple pre-DCP display controller MIPI interface
+
+maintainers:
+  - Sasha Finkelstein <fnkl.kernel@gmail.com>
+
+description:
+  The MIPI controller part of the pre-DCP Apple display controller
+
+allOf:
+  - $ref: dsi-controller.yaml#
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - apple,t8112-display-pipe-mipi
+          - apple,t8103-display-pipe-mipi
+      - const: apple,h7-display-pipe-mipi
+
+  reg:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: Input port. Always connected to the primary controller
+
+      port@1:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: Output MIPI DSI port to the panel
+
+    required:
+      - port@0
+      - port@1
+
+required:
+  - compatible
+  - reg
+  - ports
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    dsi@28200000 {
+        compatible = "apple,t8103-display-pipe-mipi", "apple,h7-display-pipe-mipi";
+        reg = <0x28200000 0xc000>;
+        power-domains = <&ps_dispdfr_mipi>;
+
+        ports {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            port@0 {
+                reg = <0>;
+
+                dfr_adp_out_mipi: endpoint {
+                    remote-endpoint = <&dfr_adp_out_mipi>;
+                };
+            };
+
+            port@1 {
+                reg = <1>;
+
+                dfr_panel_in: endpoint {
+                    remote-endpoint = <&dfr_mipi_out_panel>;
+                };
+            };
+        };
+    };
+...
diff --git a/Bindings/display/apple,h7-display-pipe.yaml b/Bindings/display/apple,h7-display-pipe.yaml
new file mode 100644 (file)
index 0000000..102fb18
--- /dev/null
@@ -0,0 +1,88 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/apple,h7-display-pipe.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple pre-DCP display controller
+
+maintainers:
+  - Sasha Finkelstein <fnkl.kernel@gmail.com>
+
+description:
+  A secondary display controller used to drive the "touchbar" on
+  certain Apple laptops.
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - apple,t8112-display-pipe
+          - apple,t8103-display-pipe
+      - const: apple,h7-display-pipe
+
+  reg:
+    items:
+      - description: Primary register block, controls planes and blending
+      - description:
+          Contains other configuration registers like interrupt
+          and FIFO control
+
+  reg-names:
+    items:
+      - const: be
+      - const: fe
+
+  power-domains:
+    description:
+      Phandles to pmgr entries that are needed for this controller to turn on.
+      Aside from that, their specific functions are unknown
+    maxItems: 2
+
+  interrupts:
+    items:
+      - description: Unknown function
+      - description: Primary interrupt. Vsync events are reported via it
+
+  interrupt-names:
+    items:
+      - const: be
+      - const: fe
+
+  iommus:
+    maxItems: 1
+
+  port:
+    $ref: /schemas/graph.yaml#/properties/port
+    description: Output port. Always connected to apple,h7-display-pipe-mipi
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - port
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/apple-aic.h>
+    display-pipe@28200000 {
+        compatible = "apple,t8103-display-pipe", "apple,h7-display-pipe";
+        reg = <0x28200000 0xc000>,
+              <0x28400000 0x4000>;
+        reg-names = "be", "fe";
+        power-domains = <&ps_dispdfr_fe>, <&ps_dispdfr_be>;
+        interrupt-parent = <&aic>;
+        interrupts = <AIC_IRQ 502 IRQ_TYPE_LEVEL_HIGH>,
+                     <AIC_IRQ 506 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "be", "fe";
+        iommus = <&displaydfr_dart 0>;
+
+        port {
+            dfr_adp_out_mipi: endpoint {
+                remote-endpoint = <&dfr_mipi_in_adp>;
+            };
+        };
+    };
+...
index 6ceeed7..0487bbf 100644 (file)
@@ -41,6 +41,7 @@ properties:
           - enum:
               - ti,ds90cf364a # For the DS90CF364A FPD-Link LVDS Receiver
               - ti,ds90cf384a # For the DS90CF384A FPD-Link LVDS Receiver
+              - ti,sn65lvds822  # For the SN65LVDS822 FlatLink LVDS Receiver
               - ti,sn65lvds94 # For the SN65DS94 LVDS serdes
           - const: lvds-decoder # Generic LVDS decoders compatible fallback
       - enum:
index 350fb8f..5952e64 100644 (file)
@@ -111,11 +111,27 @@ properties:
         unevaluatedProperties: false
 
       port@1:
-        $ref: /schemas/graph.yaml#/properties/port
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
         description:
           DSI output port node to the panel or the next bridge
           in the chain
 
+        properties:
+          endpoint:
+            $ref: /schemas/media/video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              data-lanes:
+                description: array of physical DSI data lane indexes.
+                minItems: 1
+                items:
+                  - const: 1
+                  - const: 2
+                  - const: 3
+                  - const: 4
+
     required:
       - port@0
       - port@1
index bad6f5c..9b5f3f3 100644 (file)
@@ -35,6 +35,9 @@ properties:
   vcc-supply:
     description: A 1.8V power supply (see regulator/regulator.yaml).
 
+  interrupts:
+    maxItems: 1
+
   ports:
     $ref: /schemas/graph.yaml#/properties/ports
 
index 0f1e556..b659d79 100644 (file)
@@ -27,6 +27,7 @@ properties:
           - mediatek,mt8188-dp-intf
           - mediatek,mt8192-dpi
           - mediatek,mt8195-dp-intf
+          - mediatek,mt8195-dpi
       - items:
           - enum:
               - mediatek,mt6795-dpi
@@ -35,6 +36,10 @@ properties:
           - enum:
               - mediatek,mt8365-dpi
           - const: mediatek,mt8192-dpi
+      - items:
+          - enum:
+              - mediatek,mt8188-dpi
+          - const: mediatek,mt8195-dpi
 
   reg:
     maxItems: 1
@@ -116,11 +121,13 @@ examples:
   - |
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     #include <dt-bindings/clock/mt8173-clk.h>
+    #include <dt-bindings/power/mt8173-power.h>
 
     dpi: dpi@1401d000 {
         compatible = "mediatek,mt8173-dpi";
         reg = <0x1401d000 0x1000>;
         interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_LOW>;
+        power-domains = <&spm MT8173_POWER_DOMAIN_MM>;
         clocks = <&mmsys CLK_MM_DPI_PIXEL>,
              <&mmsys CLK_MM_DPI_ENGINE>,
              <&apmixedsys CLK_APMIXED_TVDPLL>;
index 846de6c..a5b88eb 100644 (file)
@@ -22,6 +22,9 @@ properties:
     oneOf:
       - enum:
           - mediatek,mt8195-disp-dsc
+      - items:
+          - const: mediatek,mt8188-disp-dsc
+          - const: mediatek,mt8195-disp-dsc
 
   reg:
     maxItems: 1
index ffbd1dc..2aab33c 100644 (file)
@@ -231,6 +231,7 @@ allOf:
     then:
       properties:
         clocks:
+          minItems: 7
           maxItems: 7
         clock-names:
           items:
@@ -248,29 +249,12 @@ allOf:
           contains:
             enum:
               - qcom,msm8916-dsi-ctrl
-    then:
-      properties:
-        clocks:
-          maxItems: 6
-        clock-names:
-          items:
-            - const: mdp_core
-            - const: iface
-            - const: bus
-            - const: byte
-            - const: pixel
-            - const: core
-
-  - if:
-      properties:
-        compatible:
-          contains:
-            enum:
               - qcom,msm8953-dsi-ctrl
               - qcom,msm8976-dsi-ctrl
     then:
       properties:
         clocks:
+          minItems: 6
           maxItems: 6
         clock-names:
           items:
@@ -291,6 +275,7 @@ allOf:
     then:
       properties:
         clocks:
+          minItems: 7
           maxItems: 7
         clock-names:
           items:
@@ -311,6 +296,7 @@ allOf:
     then:
       properties:
         clocks:
+          minItems: 7
           maxItems: 7
         clock-names:
           items:
@@ -328,28 +314,13 @@ allOf:
           contains:
             enum:
               - qcom,msm8998-dsi-ctrl
-              - qcom,sm6125-dsi-ctrl
-              - qcom,sm6350-dsi-ctrl
-    then:
-      properties:
-        clocks:
-          maxItems: 6
-        clock-names:
-          items:
-            - const: byte
-            - const: byte_intf
-            - const: pixel
-            - const: core
-            - const: iface
-            - const: bus
-
-  - if:
-      properties:
-        compatible:
-          contains:
-            enum:
               - qcom,sc7180-dsi-ctrl
               - qcom,sc7280-dsi-ctrl
+              - qcom,sdm845-dsi-ctrl
+              - qcom,sm6115-dsi-ctrl
+              - qcom,sm6125-dsi-ctrl
+              - qcom,sm6350-dsi-ctrl
+              - qcom,sm6375-dsi-ctrl
               - qcom,sm6150-dsi-ctrl
               - qcom,sm7150-dsi-ctrl
               - qcom,sm8150-dsi-ctrl
@@ -361,6 +332,7 @@ allOf:
     then:
       properties:
         clocks:
+          minItems: 6
           maxItems: 6
         clock-names:
           items:
@@ -380,6 +352,7 @@ allOf:
     then:
       properties:
         clocks:
+          minItems: 9
           maxItems: 9
         clock-names:
           items:
@@ -393,27 +366,6 @@ allOf:
             - const: pixel
             - const: core
 
-  - if:
-      properties:
-        compatible:
-          contains:
-            enum:
-              - qcom,sdm845-dsi-ctrl
-              - qcom,sm6115-dsi-ctrl
-              - qcom,sm6375-dsi-ctrl
-    then:
-      properties:
-        clocks:
-          maxItems: 6
-        clock-names:
-          items:
-            - const: byte
-            - const: byte_intf
-            - const: pixel
-            - const: core
-            - const: iface
-            - const: bus
-
 unevaluatedProperties: false
 
 examples:
index 6b57ce4..d0ce85a 100644 (file)
@@ -15,6 +15,8 @@ description:
 properties:
   "#clock-cells":
     const: 1
+    description:
+      See include/dt-bindings/clock/qcom,dsi-phy-28nm.h for clock IDs.
 
   "#phy-cells":
     const: 0
index ab884e2..4392aa7 100644 (file)
@@ -123,6 +123,7 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,adreno-gmu-623.0
               - qcom,adreno-gmu-635.0
               - qcom,adreno-gmu-660.1
               - qcom,adreno-gmu-663.0
index a90a8b3..5fac3e2 100644 (file)
@@ -52,6 +52,13 @@ patternProperties:
         items:
           - const: qcom,sa8775p-dp
 
+  "^phy@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        const: qcom,sa8775p-edp-phy
+
 required:
   - compatible
 
@@ -61,6 +68,7 @@ examples:
   - |
     #include <dt-bindings/interconnect/qcom,icc.h>
     #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/qcom,sa8775p-dispcc.h>
     #include <dt-bindings/clock/qcom,sa8775p-gcc.h>
     #include <dt-bindings/interconnect/qcom,sa8775p-rpmh.h>
     #include <dt-bindings/power/qcom,rpmhpd.h>
@@ -158,6 +166,26 @@ examples:
             };
         };
 
+        mdss0_dp0_phy: phy@aec2a00 {
+            compatible = "qcom,sa8775p-edp-phy";
+
+            reg = <0x0aec2a00 0x200>,
+                  <0x0aec2200 0xd0>,
+                  <0x0aec2600 0xd0>,
+                  <0x0aec2000 0x1c8>;
+
+            clocks = <&dispcc0 MDSS_DISP_CC_MDSS_DPTX0_AUX_CLK>,
+                     <&dispcc0 MDSS_DISP_CC_MDSS_AHB_CLK>;
+            clock-names = "aux",
+                          "cfg_ahb";
+
+            #clock-cells = <1>;
+            #phy-cells = <0>;
+
+            vdda-phy-supply = <&vreg_l1c>;
+            vdda-pll-supply = <&vreg_l4a>;
+        };
+
         displayport-controller@af54000 {
             compatible = "qcom,sa8775p-dp";
 
@@ -186,9 +214,9 @@ examples:
 
             assigned-clocks = <&dispcc_mdss_dptx0_link_clk_src>,
                               <&dispcc_mdss_dptx0_pixel0_clk_src>;
-            assigned-clock-parents = <&mdss0_edp_phy 0>, <&mdss0_edp_phy 1>;
+            assigned-clock-parents = <&mdss0_dp0_phy 0>, <&mdss0_dp0_phy 1>;
 
-            phys = <&mdss0_edp_phy>;
+            phys = <&mdss0_dp0_phy>;
             phy-names = "dp";
 
             operating-points-v2 = <&dp_opp_table>;
index 1ea50a2..59192c5 100644 (file)
@@ -30,10 +30,14 @@ properties:
     maxItems: 1
 
   interconnects:
-    maxItems: 2
+    items:
+      - description: Interconnect path from mdp0 port to the data bus
+      - description: Interconnect path from CPU to the reg bus
 
   interconnect-names:
-    maxItems: 2
+    items:
+      - const: mdp0-mem
+      - const: cpu-cfg
 
 patternProperties:
   "^display-controller@[0-9a-f]+$":
@@ -91,9 +95,9 @@ examples:
         reg = <0x0ae00000 0x1000>;
         reg-names = "mdss";
 
-        interconnects = <&mmss_noc MASTER_MDP 0 &gem_noc SLAVE_LLCC 0>,
-                        <&mc_virt MASTER_LLCC 0 &mc_virt SLAVE_EBI1 0>;
-        interconnect-names = "mdp0-mem", "mdp1-mem";
+        interconnects = <&mmss_noc MASTER_MDP 0 &mc_virt SLAVE_EBI1 0>,
+                        <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_DISPLAY_CFG 0>;
+        interconnect-names = "mdp0-mem", "cpu-cfg";
 
         resets = <&dispcc DISP_CC_MDSS_CORE_BCR>;
 
index 24cece1..a1c53e1 100644 (file)
@@ -29,10 +29,14 @@ properties:
     maxItems: 1
 
   interconnects:
-    maxItems: 2
+    items:
+      - description: Interconnect path from mdp0 port to the data bus
+      - description: Interconnect path from CPU to the reg bus
 
   interconnect-names:
-    maxItems: 2
+    items:
+      - const: mdp0-mem
+      - const: cpu-cfg
 
 patternProperties:
   "^display-controller@[0-9a-f]+$":
@@ -75,12 +79,17 @@ examples:
     #include <dt-bindings/clock/qcom,rpmh.h>
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     #include <dt-bindings/power/qcom,rpmhpd.h>
+    #include <dt-bindings/interconnect/qcom,sm8650-rpmh.h>
 
     display-subsystem@ae00000 {
         compatible = "qcom,sm8650-mdss";
         reg = <0x0ae00000 0x1000>;
         reg-names = "mdss";
 
+        interconnects = <&mmss_noc MASTER_MDP 0 &mc_virt SLAVE_EBI1 0>,
+                        <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_DISPLAY_CFG 0>;
+        interconnect-names = "mdp0-mem", "cpu-cfg";
+
         resets = <&dispcc_core_bcr>;
 
         power-domains = <&dispcc_gdsc>;
diff --git a/Bindings/display/panel/apple,summit.yaml b/Bindings/display/panel/apple,summit.yaml
new file mode 100644 (file)
index 0000000..f081755
--- /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/display/panel/apple,summit.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple "Summit" display panel
+
+maintainers:
+  - Sasha Finkelstein <fnkl.kernel@gmail.com>
+
+description:
+  An OLED panel used as a touchbar on certain Apple laptops.
+  Contains a backlight device, which controls brightness of the panel itself.
+  The backlight common properties are included for this reason
+
+allOf:
+  - $ref: panel-common.yaml#
+  - $ref: /schemas/leds/backlight/common.yaml#
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - apple,j293-summit
+          - apple,j493-summit
+      - const: apple,summit
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - max-brightness
+  - port
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@0 {
+            compatible = "apple,j293-summit", "apple,summit";
+            reg = <0>;
+            max-brightness = <255>;
+
+            port {
+                endpoint {
+                    remote-endpoint = <&dfr_bridge_out>;
+                };
+            };
+        };
+    };
+...
index c649fb0..e4c1aa5 100644 (file)
@@ -18,8 +18,14 @@ properties:
       - enum:
           # Boe nv110wum-l60 11.0" WUXGA TFT LCD panel
           - boe,nv110wum-l60
+          # CSOT pna957qt1-1 10.95" WUXGA TFT LCD panel
+          - csot,pna957qt1-1
           # IVO t109nw41 11.0" WUXGA TFT LCD panel
           - ivo,t109nw41
+          # KINGDISPLAY KD110N11-51IE 10.95" WUXGA TFT LCD panel
+          - kingdisplay,kd110n11-51ie
+          # STARRY 2082109QFH040022-50E 10.95" WUXGA TFT LCD panel
+          - starry,2082109qfh040022-50e
           # STARRY himax83102-j02 10.51" WUXGA TFT LCD panel
           - starry,himax83102-j02
       - const: himax,hx83102
index 3623ffa..96621b8 100644 (file)
@@ -33,7 +33,9 @@ properties:
     description: Reference to the regulator powering the panel VCC pins.
 
   data-mapping:
-    const: jeida-24
+    enum:
+      - jeida-18
+      - jeida-24
 
   width-mm:
     const: 210
@@ -41,6 +43,7 @@ properties:
   height-mm:
     const: 158
 
+  backlight: true
   panel-timing: true
   port: true
 
@@ -48,7 +51,6 @@ additionalProperties: false
 
 required:
   - compatible
-  - vcc-supply
   - data-mapping
   - width-mm
   - height-mm
index e80fc70..548f5ac 100644 (file)
@@ -40,6 +40,8 @@ properties:
       - auo,g185han01
         # AU Optronics Corporation 19.0" (1280x1024) TFT LCD panel
       - auo,g190ean01
+        # BOE AV123Z7M-N17 12.3" (1920x720) LVDS TFT LCD panel
+      - boe,av123z7m-n17
         # Kaohsiung Opto-Electronics Inc. 10.1" WUXGA (1920 x 1200) LVDS TFT LCD panel
       - koe,tx26d202vm0bwa
         # Lincoln Technology Solutions, LCD185-101CT 10.1" TFT 1920x1200
index e3ee3a3..b0de4fd 100644 (file)
@@ -63,6 +63,8 @@ properties:
       - auo,t215hvn01
         # Shanghai AVIC Optoelectronics 7" 1024x600 color TFT-LCD panel
       - avic,tm070ddh03
+        # BOE AV101HDT-a10 10.1" 1280x720 LVDS panel
+      - boe,av101hdt-a10
         # BOE BP082WX1-100 8.2" WXGA (1280x800) LVDS panel
       - boe,bp082wx1-100
         # BOE BP101WX1-100 10.1" WXGA (1280x800) LVDS panel
diff --git a/Bindings/display/panel/raydium,rm67200.yaml b/Bindings/display/panel/raydium,rm67200.yaml
new file mode 100644 (file)
index 0000000..54c9c0e
--- /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/display/panel/raydium,rm67200.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Raydium RM67200 based MIPI-DSI panels
+
+maintainers:
+  - Sebastian Reichel <sebastian.reichel@collabora.com>
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - wanchanglong,w552793baa
+      - const: raydium,rm67200
+
+  reg:
+    maxItems: 1
+
+  vdd-supply:
+    description: 2.8V Logic voltage
+
+  iovcc-supply:
+    description: 1.8V IO voltage
+
+  vsp-supply:
+    description: positive 5.5V voltage
+
+  vsn-supply:
+    description: negative 5.5V voltage
+
+  backlight: true
+  port: true
+  reset-gpios: true
+
+required:
+  - compatible
+  - port
+  - reg
+  - reset-gpios
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        panel@0 {
+            compatible = "wanchanglong,w552793baa", "raydium,rm67200";
+            reg = <0>;
+
+            vdd-supply = <&regulator1>;
+            iovcc-supply = <&regulator2>;
+            vsp-supply = <&regulator3>;
+            vsn-supply = <&regulator4>;
+            reset-gpios = <&gpiobank 42 GPIO_ACTIVE_LOW>;
+
+            port {
+                panel0_in: endpoint {
+                    remote-endpoint = <&dsi0_out>;
+                };
+            };
+        };
+    };
+...
diff --git a/Bindings/display/panel/visionox,rm692e5.yaml b/Bindings/display/panel/visionox,rm692e5.yaml
new file mode 100644 (file)
index 0000000..d4b4672
--- /dev/null
@@ -0,0 +1,77 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/visionox,rm692e5.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Visionox RM692E5 6.55" 2400x1080 120Hz MIPI-DSI Panel
+
+maintainers:
+  - Danila Tikhonov <danila@jiaxyga.com>
+
+description:
+  The Visionox RM692E5 is a generic DSI Panel IC used to control
+  AMOLED panels.
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - visionox,rm692e5
+      - items:
+          - enum:
+              - nothing,rm692e5-spacewar
+          - const: visionox,rm692e5
+
+  reg:
+    maxItems: 1
+
+  vdd-supply:
+    description: 3.3V source voltage rail
+
+  vddio-supply:
+    description: 1.8V I/O source voltage rail
+
+  reset-gpios: true
+  port: true
+
+required:
+  - compatible
+  - reg
+  - reset-gpios
+  - vdd-supply
+  - vddio-supply
+  - port
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        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>;
+
+            port {
+                panel_in: endpoint {
+                    remote-endpoint = <&mdss_dsi0_out>;
+                };
+            };
+        };
+    };
+
+...
index 3880b4c..c27dfea 100644 (file)
@@ -47,12 +47,26 @@ properties:
     maxItems: 1
 
   # See compatible-specific constraints below.
-  clocks: true
-  clock-names: true
+  clocks:
+    minItems: 1
+    maxItems: 8
+
+  clock-names:
+    minItems: 1
+    maxItems: 8
+
   interrupts:
+    minItems: 1
+    maxItems: 4
     description: Interrupt specifiers, one per DU channel
-  resets: true
-  reset-names: true
+
+  resets:
+    minItems: 1
+    maxItems: 2
+
+  reset-names:
+    minItems: 1
+    maxItems: 2
 
   power-domains:
     maxItems: 1
@@ -74,7 +88,7 @@ properties:
 
   renesas,cmms:
     $ref: /schemas/types.yaml#/definitions/phandle-array
-    minItems: 1
+    minItems: 2
     maxItems: 4
     items:
       maxItems: 1
@@ -174,6 +188,7 @@ allOf:
             - pattern: '^dclkin\.[01]$'
 
         interrupts:
+          minItems: 2
           maxItems: 2
 
         resets:
@@ -229,6 +244,7 @@ allOf:
             - pattern: '^dclkin\.[01]$'
 
         interrupts:
+          minItems: 2
           maxItems: 2
 
         resets:
@@ -282,6 +298,7 @@ allOf:
             - pattern: '^dclkin\.[01]$'
 
         interrupts:
+          minItems: 2
           maxItems: 2
 
         resets:
@@ -336,6 +353,7 @@ allOf:
             - pattern: '^dclkin\.[01]$'
 
         interrupts:
+          minItems: 2
           maxItems: 2
 
         resets:
@@ -397,6 +415,7 @@ allOf:
             - pattern: '^dclkin\.[012]$'
 
         interrupts:
+          minItems: 3
           maxItems: 3
 
         resets:
@@ -461,9 +480,11 @@ allOf:
             - pattern: '^dclkin\.[0123]$'
 
         interrupts:
+          minItems: 4
           maxItems: 4
 
         resets:
+          minItems: 2
           maxItems: 2
 
         reset-names:
@@ -534,9 +555,11 @@ allOf:
             - pattern: '^dclkin\.[012]$'
 
         interrupts:
+          minItems: 3
           maxItems: 3
 
         resets:
+          minItems: 2
           maxItems: 2
 
         reset-names:
@@ -605,9 +628,11 @@ allOf:
             - pattern: '^dclkin\.[013]$'
 
         interrupts:
+          minItems: 3
           maxItems: 3
 
         resets:
+          minItems: 2
           maxItems: 2
 
         reset-names:
@@ -726,6 +751,7 @@ allOf:
             - pattern: '^dclkin\.[01]$'
 
         interrupts:
+          minItems: 2
           maxItems: 2
 
         resets:
index d8e7618..96b4b08 100644 (file)
@@ -29,6 +29,7 @@ allOf:
 properties:
   compatible:
     enum:
+      - rockchip,rk3576-dw-hdmi-qp
       - rockchip,rk3588-dw-hdmi-qp
 
   reg:
@@ -156,7 +157,7 @@ examples:
                      <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH 0>,
                      <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH 0>;
         interrupt-names = "avp", "cec", "earc", "main", "hpd";
-        phys = <&hdptxphy_hdmi0>;
+        phys = <&hdptxphy0>;
         power-domains = <&power RK3588_PD_VO1>;
         resets = <&cru SRST_HDMITX0_REF>, <&cru SRST_HDMIHDP0>;
         reset-names = "ref", "hdp";
index 2531726..f546d48 100644 (file)
@@ -14,12 +14,14 @@ description:
 maintainers:
   - Sandy Huang <hjc@rock-chips.com>
   - Heiko Stuebner <heiko@sntech.de>
+  - Andy Yan <andyshrk@163.com>
 
 properties:
   compatible:
     enum:
       - rockchip,rk3566-vop
       - rockchip,rk3568-vop
+      - rockchip,rk3576-vop
       - rockchip,rk3588-vop
 
   reg:
@@ -37,10 +39,21 @@ properties:
       - const: gamma-lut
 
   interrupts:
-    maxItems: 1
+    minItems: 1
+    maxItems: 4
     description:
-      The VOP interrupt is shared by several interrupt sources, such as
-      frame start (VSYNC), line flag and other status interrupts.
+      For VOP version under rk3576, the interrupt is shared by several interrupt
+      sources, such as frame start (VSYNC), line flag and other interrupt status.
+      For VOP version from rk3576 there is a system interrupt for bus error, and
+      every video port has it's independent interrupts for vsync and other video
+      port related error interrupts.
+
+  interrupt-names:
+    items:
+      - const: sys
+      - const: vp0
+      - const: vp1
+      - const: vp2
 
   # See compatible-specific constraints below.
   clocks:
@@ -53,6 +66,8 @@ properties:
       - description: Pixel clock for video port 2.
       - description: Pixel clock for video port 3.
       - description: Peripheral(vop grf/dsi) clock.
+      - description: Alternative pixel clock provided by HDMI0 PHY PLL.
+      - description: Alternative pixel clock provided by HDMI1 PHY PLL.
 
   clock-names:
     minItems: 5
@@ -64,6 +79,8 @@ properties:
       - const: dclk_vp2
       - const: dclk_vp3
       - const: pclk_vop
+      - const: pll_hdmiphy0
+      - const: pll_hdmiphy1
 
   rockchip,grf:
     $ref: /schemas/types.yaml#/definitions/phandle
@@ -120,43 +137,100 @@ allOf:
       properties:
         compatible:
           contains:
-            const: rockchip,rk3588-vop
+            enum:
+              - rockchip,rk3566-vop
+              - rockchip,rk3568-vop
     then:
       properties:
         clocks:
-          minItems: 7
+          maxItems: 5
+
         clock-names:
-          minItems: 7
+          maxItems: 5
+
+        interrupts:
+          maxItems: 1
+
+        interrupt-names: false
 
         ports:
           required:
             - port@0
             - port@1
             - port@2
-            - port@3
+
+        rockchip,vo1-grf: false
+        rockchip,vop-grf: false
+        rockchip,pmu: false
 
       required:
         - rockchip,grf
-        - rockchip,vo1-grf
-        - rockchip,vop-grf
-        - rockchip,pmu
 
-    else:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - rockchip,rk3576-vop
+    then:
       properties:
+        clocks:
+          maxItems: 5
+
+        clock-names:
+          maxItems: 5
+
+        interrupts:
+          minItems: 4
+
+        interrupt-names:
+          minItems: 4
+
+        ports:
+          required:
+            - port@0
+            - port@1
+            - port@2
+
         rockchip,vo1-grf: false
         rockchip,vop-grf: false
-        rockchip,pmu: false
 
+      required:
+        - rockchip,grf
+        - rockchip,pmu
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: rockchip,rk3588-vop
+    then:
+      properties:
         clocks:
-          maxItems: 5
+          minItems: 7
+          maxItems: 9
+
         clock-names:
-          maxItems: 5
+          minItems: 7
+          maxItems: 9
+
+        interrupts:
+          maxItems: 1
+
+        interrupt-names: false
 
         ports:
           required:
             - port@0
             - port@1
             - port@2
+            - port@3
+
+      required:
+        - rockchip,grf
+        - rockchip,vo1-grf
+        - rockchip,vop-grf
+        - rockchip,pmu
 
 additionalProperties: false
 
@@ -184,6 +258,7 @@ examples:
                               "dclk_vp1",
                               "dclk_vp2";
                 power-domains = <&power RK3568_PD_VO>;
+                rockchip,grf = <&grf>;
                 iommus = <&vop_mmu>;
                 vop_out: ports {
                     #address-cells = <1>;
index f448624..193ddb1 100644 (file)
@@ -17,6 +17,7 @@ properties:
   compatible:
     enum:
       - nvidia,tegra114-mipi
+      - nvidia,tegra124-mipi
       - nvidia,tegra210-mipi
       - nvidia,tegra186-mipi
 
diff --git a/Bindings/dma/atmel,at91sam9g45-dma.yaml b/Bindings/dma/atmel,at91sam9g45-dma.yaml
new file mode 100644 (file)
index 0000000..a58dc40
--- /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/dma/atmel,at91sam9g45-dma.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Atmel Direct Memory Access Controller (DMA)
+
+maintainers:
+  - Ludovic Desroches <ludovic.desroches@microchip.com>
+
+description:
+  The Atmel Direct Memory Access Controller (DMAC) transfers data from a source
+  peripheral to a destination peripheral over one or more AMBA buses. One channel
+  is required for each source/destination pair. In the most basic configuration,
+  the DMAC has one master interface and one channel. The master interface reads
+  the data from a source and writes it to a destination. Two AMBA transfers are
+  required for each DMAC data transfer. This is also known as a dual-access transfer.
+  The DMAC is programmed via the APB interface.
+
+properties:
+  compatible:
+    enum:
+      - atmel,at91sam9g45-dma
+      - atmel,at91sam9rl-dma
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  "#dma-cells":
+    description:
+      Must be <2>, used to represent the number of integer cells in the dma
+      property of client devices. The two cells in order are
+      1. The first cell represents the channel number.
+      2. The second cell is 0 for RX and 1 for TX transfers.
+    const: 2
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    const: dma_clk
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - "#dma-cells"
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    dma-controller@ffffec00 {
+        compatible = "atmel,at91sam9g45-dma";
+        reg = <0xffffec00 0x200>;
+        interrupts = <21>;
+        #dma-cells = <2>;
+        clocks = <&pmc 2 20>;
+        clock-names = "dma_clk";
+    };
+
+...
index 9ca1c5d..73fc13b 100644 (file)
@@ -32,6 +32,9 @@ properties:
               - microchip,sam9x60-dma
               - microchip,sam9x7-dma
           - const: atmel,sama5d4-dma
+      - items:
+          - const: microchip,sama7d65-dma
+          - const: microchip,sama7g5-dma
 
   "#dma-cells":
     description: |
diff --git a/Bindings/dma/atmel-dma.txt b/Bindings/dma/atmel-dma.txt
deleted file mode 100644 (file)
index f69bcf5..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-* Atmel Direct Memory Access Controller (DMA)
-
-Required properties:
-- compatible: Should be "atmel,<chip>-dma".
-- reg: Should contain DMA registers location and length.
-- interrupts: Should contain DMA interrupt.
-- #dma-cells: Must be <2>, used to represent the number of integer cells in
-the dmas property of client devices.
-
-Example:
-
-dma0: dma@ffffec00 {
-       compatible = "atmel,at91sam9g45-dma";
-       reg = <0xffffec00 0x200>;
-       interrupts = <21>;
-       #dma-cells = <2>;
-};
-
-DMA clients connected to the Atmel DMA controller must use the format
-described in the dma.txt file, using a three-cell specifier for each channel:
-a phandle plus two integer cells.
-The three cells in order are:
-
-1. A phandle pointing to the DMA controller.
-2. The memory interface (16 most significant bits), the peripheral interface
-(16 less significant bits).
-3. Parameters for the at91 DMA configuration register which are device
-dependent:
-  - bit 7-0: peripheral identifier for the hardware handshaking interface. The
-  identifier can be different for tx and rx.
-  - bit 11-8: FIFO configuration. 0 for half FIFO, 1 for ALAP, 2 for ASAP.
-
-Example:
-
-i2c0@i2c@f8010000 {
-       compatible = "atmel,at91sam9x5-i2c";
-       reg = <0xf8010000 0x100>;
-       interrupts = <9 4 6>;
-       dmas = <&dma0 1 7>,
-              <&dma0 1 8>;
-       dma-names = "tx", "rx";
-};
index 4f92546..950e8fa 100644 (file)
@@ -27,6 +27,14 @@ properties:
           - fsl,imx93-edma4
           - fsl,imx95-edma5
           - nxp,s32g2-edma
+      - items:
+          - enum:
+              - fsl,imx94-edma3
+          - const: fsl,imx93-edma3
+      - items:
+          - enum:
+              - fsl,imx94-edma5
+          - const: fsl,imx95-edma5
       - items:
           - const: fsl,ls1028a-edma
           - const: fsl,vf610-edma
diff --git a/Bindings/dma/fsl,elo-dma.yaml b/Bindings/dma/fsl,elo-dma.yaml
new file mode 100644 (file)
index 0000000..92288d7
--- /dev/null
@@ -0,0 +1,137 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/dma/fsl,elo-dma.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale Elo DMA Controller
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+description:
+  This is a little-endian 4-channel DMA controller, used in Freescale mpc83xx
+  series chips such as mpc8315, mpc8349, mpc8379 etc.
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - fsl,mpc8313-dma
+          - fsl,mpc8315-dma
+          - fsl,mpc8323-dma
+          - fsl,mpc8347-dma
+          - fsl,mpc8349-dma
+          - fsl,mpc8360-dma
+          - fsl,mpc8377-dma
+          - fsl,mpc8378-dma
+          - fsl,mpc8379-dma
+      - const: fsl,elo-dma
+
+  reg:
+    items:
+      - description:
+          DMA General Status Register, i.e. DGSR which contains status for
+          all the 4 DMA channels.
+
+  cell-index:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Controller index. 0 for controller @ 0x8100.
+
+  ranges: true
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  interrupts:
+    maxItems: 1
+    description: Controller interrupt.
+
+required:
+  - compatible
+  - reg
+
+patternProperties:
+  "^dma-channel@[0-9a-f]+$":
+    type: object
+    additionalProperties: false
+
+    properties:
+      compatible:
+        oneOf:
+          # native DMA channel
+          - items:
+              - enum:
+                  - fsl,mpc8315-dma-channel
+                  - fsl,mpc8323-dma-channel
+                  - fsl,mpc8347-dma-channel
+                  - fsl,mpc8349-dma-channel
+                  - fsl,mpc8360-dma-channel
+                  - fsl,mpc8377-dma-channel
+                  - fsl,mpc8378-dma-channel
+                  - fsl,mpc8379-dma-channel
+              - const: fsl,elo-dma-channel
+
+          # audio DMA channel, see fsl,ssi.yaml
+          - const: fsl,ssi-dma-channel
+
+      reg:
+        maxItems: 1
+
+      cell-index:
+        description: DMA channel index starts at 0.
+
+      interrupts:
+        maxItems: 1
+        description:
+          Per-channel interrupt. Only necessary if no controller interrupt has
+          been provided.
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    dma@82a8 {
+        compatible = "fsl,mpc8349-dma", "fsl,elo-dma";
+        reg = <0x82a8 4>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges = <0 0x8100 0x1a4>;
+        interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
+        cell-index = <0>;
+
+        dma-channel@0 {
+            compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
+            reg = <0 0x80>;
+            cell-index = <0>;
+            interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
+        };
+
+        dma-channel@80 {
+            compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
+            reg = <0x80 0x80>;
+            cell-index = <1>;
+            interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
+        };
+
+        dma-channel@100 {
+            compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
+            reg = <0x100 0x80>;
+            cell-index = <2>;
+            interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
+        };
+
+        dma-channel@180 {
+            compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
+            reg = <0x180 0x80>;
+            cell-index = <3>;
+            interrupts = <71 IRQ_TYPE_LEVEL_LOW>;
+        };
+    };
+
+...
diff --git a/Bindings/dma/fsl,elo3-dma.yaml b/Bindings/dma/fsl,elo3-dma.yaml
new file mode 100644 (file)
index 0000000..0f5e475
--- /dev/null
@@ -0,0 +1,125 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/dma/fsl,elo3-dma.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale Elo3 DMA Controller
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+description:
+  DMA controller which has same function as EloPlus except that Elo3 has 8
+  channels while EloPlus has only 4, it is used in Freescale Txxx and Bxxx
+  series chips, such as t1040, t4240, b4860.
+
+properties:
+  compatible:
+    const: fsl,elo3-dma
+
+  reg:
+    items:
+      - description:
+          DMA General Status Registers starting from DGSR0, for channel 1~4
+      - description:
+          DMA General Status Registers starting from DGSR1, for channel 5~8
+
+  ranges: true
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  interrupts:
+    maxItems: 1
+
+patternProperties:
+  "^dma-channel@[0-9a-f]+$":
+    type: object
+    additionalProperties: false
+
+    properties:
+      compatible:
+        enum:
+          # native DMA channel
+          - fsl,eloplus-dma-channel
+
+          # audio DMA channel, see fsl,ssi.yaml
+          - fsl,ssi-dma-channel
+
+      reg:
+        maxItems: 1
+
+      interrupts:
+        maxItems: 1
+        description:
+          Per-channel interrupt. Only necessary if no controller interrupt has
+          been provided.
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    dma@100300 {
+        compatible = "fsl,elo3-dma";
+        reg = <0x100300 0x4>,
+              <0x100600 0x4>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges = <0x0 0x100100 0x500>;
+
+        dma-channel@0 {
+            compatible = "fsl,eloplus-dma-channel";
+            reg = <0x0 0x80>;
+            interrupts = <28 IRQ_TYPE_EDGE_FALLING 0 0>;
+        };
+
+        dma-channel@80 {
+            compatible = "fsl,eloplus-dma-channel";
+            reg = <0x80 0x80>;
+            interrupts = <29 IRQ_TYPE_EDGE_FALLING 0 0>;
+        };
+
+        dma-channel@100 {
+            compatible = "fsl,eloplus-dma-channel";
+            reg = <0x100 0x80>;
+            interrupts = <30 IRQ_TYPE_EDGE_FALLING 0 0>;
+        };
+
+        dma-channel@180 {
+            compatible = "fsl,eloplus-dma-channel";
+            reg = <0x180 0x80>;
+            interrupts = <31 IRQ_TYPE_EDGE_FALLING 0 0>;
+        };
+
+        dma-channel@300 {
+            compatible = "fsl,eloplus-dma-channel";
+            reg = <0x300 0x80>;
+            interrupts = <76 IRQ_TYPE_EDGE_FALLING 0 0>;
+        };
+
+        dma-channel@380 {
+            compatible = "fsl,eloplus-dma-channel";
+            reg = <0x380 0x80>;
+            interrupts = <77 IRQ_TYPE_EDGE_FALLING 0 0>;
+        };
+
+        dma-channel@400 {
+            compatible = "fsl,eloplus-dma-channel";
+            reg = <0x400 0x80>;
+            interrupts = <78 IRQ_TYPE_EDGE_FALLING 0 0>;
+        };
+
+        dma-channel@480 {
+            compatible = "fsl,eloplus-dma-channel";
+            reg = <0x480 0x80>;
+            interrupts = <79 IRQ_TYPE_EDGE_FALLING 0 0>;
+        };
+    };
+
+...
diff --git a/Bindings/dma/fsl,eloplus-dma.yaml b/Bindings/dma/fsl,eloplus-dma.yaml
new file mode 100644 (file)
index 0000000..8992f24
--- /dev/null
@@ -0,0 +1,132 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/dma/fsl,eloplus-dma.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale EloPlus DMA Controller
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+description:
+  This is a 4-channel DMA controller with extended addresses and chaining,
+  mainly used in Freescale mpc85xx/86xx, Pxxx and BSC series chips, such as
+  mpc8540, mpc8641 p4080, bsc9131 etc.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - fsl,mpc8540-dma
+              - fsl,mpc8541-dma
+              - fsl,mpc8548-dma
+              - fsl,mpc8555-dma
+              - fsl,mpc8560-dma
+              - fsl,mpc8572-dma
+              - fsl,mpc8641-dma
+          - const: fsl,eloplus-dma
+      - const: fsl,eloplus-dma
+
+  reg:
+    items:
+      - description:
+          DMA General Status Register, i.e. DGSR which contains
+          status for all the 4 DMA channels
+
+  cell-index:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      controller index.  0 for controller @ 0x21000, 1 for controller @ 0xc000
+
+  ranges: true
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  interrupts:
+    maxItems: 1
+    description: Controller interrupt.
+
+patternProperties:
+  "^dma-channel@[0-9a-f]+$":
+    type: object
+    additionalProperties: false
+
+    properties:
+      compatible:
+        oneOf:
+          # native DMA channel
+          - items:
+              - enum:
+                  - fsl,mpc8540-dma-channel
+                  - fsl,mpc8541-dma-channel
+                  - fsl,mpc8548-dma-channel
+                  - fsl,mpc8555-dma-channel
+                  - fsl,mpc8560-dma-channel
+                  - fsl,mpc8572-dma-channel
+              - const: fsl,eloplus-dma-channel
+
+          # audio DMA channel, see fsl,ssi.yaml
+          - const: fsl,ssi-dma-channel
+
+      reg:
+        maxItems: 1
+
+      cell-index:
+        description: DMA channel index starts at 0.
+
+      interrupts:
+        maxItems: 1
+        description:
+          Per-channel interrupt. Only necessary if no controller interrupt has
+          been provided.
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    dma@21300 {
+        compatible = "fsl,mpc8540-dma", "fsl,eloplus-dma";
+        reg = <0x21300 4>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges = <0 0x21100 0x200>;
+        cell-index = <0>;
+
+        dma-channel@0 {
+            compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
+            reg = <0 0x80>;
+            cell-index = <0>;
+            interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
+        };
+
+        dma-channel@80 {
+            compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
+            reg = <0x80 0x80>;
+            cell-index = <1>;
+            interrupts = <21 IRQ_TYPE_EDGE_FALLING>;
+        };
+
+        dma-channel@100 {
+            compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
+            reg = <0x100 0x80>;
+            cell-index = <2>;
+            interrupts = <22 IRQ_TYPE_EDGE_FALLING>;
+        };
+
+        dma-channel@180 {
+            compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
+            reg = <0x180 0x80>;
+            cell-index = <3>;
+            interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
+        };
+    };
+
+...
index a17cf23..75a7d95 100644 (file)
@@ -31,6 +31,12 @@ properties:
               - fsl,imx6q-dma-apbh
               - fsl,imx6sx-dma-apbh
               - fsl,imx7d-dma-apbh
+              - fsl,imx8dxl-dma-apbh
+              - fsl,imx8mm-dma-apbh
+              - fsl,imx8mn-dma-apbh
+              - fsl,imx8mp-dma-apbh
+              - fsl,imx8mq-dma-apbh
+              - fsl,imx8qm-dma-apbh
               - fsl,imx8qxp-dma-apbh
           - const: fsl,imx28-dma-apbh
       - enum:
index 525f5f3..935735a 100644 (file)
@@ -59,6 +59,8 @@ properties:
     minimum: 1
     maximum: 8
 
+  dma-noncoherent: true
+
   resets:
     minItems: 1
     maxItems: 2
index ac31989..b5399c6 100644 (file)
@@ -75,7 +75,6 @@ additionalProperties: false
 
 examples:
   - |
-    #include <dt-bindings/clock/xlnx-zynqmp-clk.h>
 
     fpd_dma_chan1: dma-controller@fd500000 {
       compatible = "xlnx,zynqmp-dma-1.0";
@@ -84,7 +83,7 @@ examples:
       interrupts = <0 117 0x4>;
       #dma-cells = <1>;
       clock-names = "clk_main", "clk_apb";
-      clocks = <&zynqmp_clk GDMA_REF>, <&zynqmp_clk LPD_LSBUS>;
+      clocks = <&zynqmp_clk 19>, <&zynqmp_clk 31>;
       xlnx,bus-width = <128>;
       dma-coherent;
     };
index ab93ffd..b8693e4 100644 (file)
@@ -82,6 +82,15 @@ properties:
     description:
       Phandle to syscon block which provide access for processor enablement
 
+  resets:
+    minItems: 1
+
+  reset-names:
+    minItems: 1
+    items:
+      - const: runstall
+      - const: softreset
+
 required:
   - compatible
   - reg
@@ -164,6 +173,17 @@ allOf:
             - const: txdb1
             - const: rxdb0
             - const: rxdb1
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - fsl,imx8mp-dsp
+              - fsl,imx8mp-hifi4
+    then:
+      required:
+        - resets
+        - reset-names
 
 additionalProperties: false
 
@@ -186,6 +206,7 @@ examples:
     };
   - |
     #include <dt-bindings/clock/imx8mp-clock.h>
+    #include <dt-bindings/reset/imx8mp-reset-audiomix.h>
     dsp_reserved: dsp@92400000 {
       reg = <0x92400000 0x1000000>;
       no-map;
@@ -220,5 +241,6 @@ examples:
                <&mu2 3 0>;
       memory-region = <&dsp_vdev0buffer>, <&dsp_vdev0vring0>,
                       <&dsp_vdev0vring1>, <&dsp_reserved>;
-      fsl,dsp-ctrl = <&audio_blk_ctrl>;
+      resets = <&audio_blk_ctrl IMX8MP_AUDIOMIX_DSP_RUNSTALL>;
+      reset-names = "runstall";
     };
index 4772ded..202acac 100644 (file)
@@ -133,6 +133,9 @@ The above-described ordering follows this approach:
 3. Status is the last information to annotate that device node is or is not
    finished (board resources are needed).
 
+The individual properties inside each group shall use natural sort order by
+the property name.
+
 Example::
 
        /* SoC DTSI */
@@ -158,7 +161,10 @@ Example::
        /* Board DTS */
 
        &device_node {
-               vdd-supply = <&board_vreg1>;
+               vdd-0v9-supply = <&board_vreg1>;
+               vdd-1v8-supply = <&board_vreg4>;
+               vdd-3v3-supply = <&board_vreg2>;
+               vdd-12v-supply = <&board_vreg3>;
                status = "okay";
        }
 
diff --git a/Bindings/edac/altr,socfpga-ecc-manager.yaml b/Bindings/edac/altr,socfpga-ecc-manager.yaml
new file mode 100644 (file)
index 0000000..ec4634c
--- /dev/null
@@ -0,0 +1,323 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright (C) 2025 Altera Corporation
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/edac/altr,socfpga-ecc-manager.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Altera SoCFPGA ECC Manager
+
+maintainers:
+  - Matthew Gerlach <matthew.gerlach@altera.com>
+
+description:
+  This binding describes the device tree nodes required for the Altera SoCFPGA
+  ECC Manager for the Cyclone5, Arria5, Arria10, Stratix10, and Agilex chip
+  families.
+
+properties:
+
+  compatible:
+    oneOf:
+      - items:
+          - const: altr,socfpga-s10-ecc-manager
+          - const: altr,socfpga-a10-ecc-manager
+      - const: altr,socfpga-a10-ecc-manager
+      - const: altr,socfpga-ecc-manager
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  interrupts:
+    minItems: 1
+    maxItems: 2
+
+  interrupt-controller: true
+
+  "#interrupt-cells":
+    const: 2
+
+  ranges: true
+
+  altr,sysmgr-syscon:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: phandle to Stratix10 System Manager Block with the ECC manager registers
+
+  sdramedac:
+    type: object
+    additionalProperties: false
+
+    properties:
+      compatible:
+        enum:
+          - altr,sdram-edac-a10
+          - altr,sdram-edac-s10
+
+      interrupts:
+        minItems: 1
+        maxItems: 2
+
+      altr,sdr-syscon:
+        $ref: /schemas/types.yaml#/definitions/phandle
+        description: phandle to SDRAM parent
+
+    required:
+      - compatible
+      - interrupts
+      - altr,sdr-syscon
+
+patternProperties:
+  "^ocram-ecc@[a-f0-9]+$":
+    type: object
+    additionalProperties: false
+
+    properties:
+      compatible:
+        oneOf:
+          - items:
+              - const: altr,socfpga-s10-ocram-ecc
+              - const: altr,socfpga-a10-ocram-ecc
+          - const: altr,socfpga-a10-ocram-ecc
+          - const: altr,socfpga-ocram-ecc
+
+      reg:
+        maxItems: 1
+
+      interrupts:
+        minItems: 1
+        maxItems: 2
+
+      iram:
+        $ref: /schemas/types.yaml#/definitions/phandle
+        description: phandle to OCRAM parent
+
+      altr,ecc-parent:
+        $ref: /schemas/types.yaml#/definitions/phandle
+        description: phandle to OCRAM parent
+
+    required:
+      - compatible
+      - reg
+      - interrupts
+
+  "^usb[0-9]-ecc@[a-f0-9]+$":
+    type: object
+    additionalProperties: false
+
+    properties:
+      compatible:
+        oneOf:
+          - items:
+              - const: altr,socfpga-s10-usb-ecc
+              - const: altr,socfpga-usb-ecc
+          - const: altr,socfpga-usb-ecc
+
+      reg:
+        maxItems: 1
+
+      interrupts:
+        minItems: 1
+        maxItems: 2
+
+      altr,ecc-parent:
+        $ref: /schemas/types.yaml#/definitions/phandle
+        description: phandle to USB parent
+
+    required:
+      - compatible
+      - reg
+      - interrupts
+      - altr,ecc-parent
+
+  "^emac[0-9]-[t,r]x-ecc@[a-f0-9]+$":
+    type: object
+    additionalProperties: false
+
+    properties:
+      compatible:
+        oneOf:
+          - items:
+              - const: altr,socfpga-s10-eth-mac-ecc
+              - const: altr,socfpga-eth-mac-ecc
+          - const: altr,socfpga-eth-mac-ecc
+
+      reg:
+        maxItems: 1
+
+      interrupts:
+        minItems: 1
+        maxItems: 2
+
+      altr,ecc-parent:
+        $ref: /schemas/types.yaml#/definitions/phandle
+        description: phandle to ethernet parent
+
+    required:
+      - compatible
+      - reg
+      - interrupts
+      - altr,ecc-parent
+
+  "^sdmmc[a-f]-ecc@[a-f0-9]+$":
+    type: object
+    additionalProperties: false
+
+    properties:
+      compatible:
+        oneOf:
+          - items:
+              - const: altr,socfpga-s10-sdmmc-ecc
+              - const: altr,socfpga-sdmmc-ecc
+          - const: altr,socfpga-sdmmc-ecc
+
+      reg:
+        maxItems: 1
+
+      interrupts:
+        minItems: 2
+        maxItems: 4
+
+      altr,ecc-parent:
+        $ref: /schemas/types.yaml#/definitions/phandle
+        description: phandle to SD/MMC parent
+
+    required:
+      - compatible
+      - reg
+      - interrupts
+      - altr,ecc-parent
+
+  "^l2-ecc@[a-f0-9]+$":
+    type: object
+    additionalProperties: false
+
+    properties:
+      compatible:
+        enum:
+          - altr,socfpga-a10-l2-ecc
+          - altr,socfpga-l2-ecc
+
+      reg:
+        maxItems: 1
+
+      interrupts:
+        maxItems: 2
+
+    required:
+      - compatible
+      - reg
+      - interrupts
+
+  "^dma-ecc@[a-f0-9]+$":
+    type: object
+    additionalProperties: false
+
+    properties:
+      compatible:
+        const: altr,socfpga-dma-ecc
+      reg:
+        maxItems: 1
+
+      interrupts:
+        maxItems: 2
+
+      altr,ecc-parent:
+        $ref: /schemas/types.yaml#/definitions/phandle
+        description: phandle to SD/MMC parent
+
+    required:
+      - compatible
+      - reg
+      - interrupts
+      - altr,ecc-parent
+
+if:
+  properties:
+    compatible:
+      contains:
+        const: altr,socfpga-ecc-manager
+then:
+  required:
+    - compatible
+    - "#address-cells"
+    - "#size-cells"
+    - ranges
+
+else:
+  required:
+    - compatible
+    - "#address-cells"
+    - "#size-cells"
+    - interrupts
+    - interrupt-controller
+    - "#interrupt-cells"
+    - ranges
+    - altr,sysmgr-syscon
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    eccmgr {
+        compatible = "altr,socfpga-s10-ecc-manager",
+                     "altr,socfpga-a10-ecc-manager";
+        altr,sysmgr-syscon = <&sysmgr>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+        ranges;
+
+        sdramedac {
+            compatible = "altr,sdram-edac-s10";
+            altr,sdr-syscon = <&sdr>;
+            interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
+        };
+
+        ocram-ecc@ff8cc000 {
+            compatible = "altr,socfpga-s10-ocram-ecc",
+                         "altr,socfpga-a10-ocram-ecc";
+            reg = <0xff8cc000 0x100>;
+            altr,ecc-parent = <&ocram>;
+            interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
+        };
+
+        usb0-ecc@ff8c4000 {
+            compatible = "altr,socfpga-s10-usb-ecc",
+                         "altr,socfpga-usb-ecc";
+            reg = <0xff8c4000 0x100>;
+            altr,ecc-parent = <&usb0>;
+            interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
+        };
+
+        emac0-rx-ecc@ff8c0000 {
+            compatible = "altr,socfpga-s10-eth-mac-ecc",
+                         "altr,socfpga-eth-mac-ecc";
+            reg = <0xff8c0000 0x100>;
+            altr,ecc-parent = <&gmac0>;
+            interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
+        };
+
+        emac0-tx-ecc@ff8c0400 {
+            compatible = "altr,socfpga-s10-eth-mac-ecc",
+                         "altr,socfpga-eth-mac-ecc";
+            reg = <0xff8c0400 0x100>;
+            altr,ecc-parent = <&gmac0>;
+            interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
+        };
+
+        sdmmca-ecc@ff8c8c00 {
+            compatible = "altr,socfpga-s10-sdmmc-ecc",
+                         "altr,socfpga-sdmmc-ecc";
+            reg = <0xff8c8c00 0x100>;
+            altr,ecc-parent = <&mmc>;
+            interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
+                         <15 IRQ_TYPE_LEVEL_HIGH>;
+        };
+    };
diff --git a/Bindings/edac/socfpga-eccmgr.txt b/Bindings/edac/socfpga-eccmgr.txt
deleted file mode 100644 (file)
index 8f52206..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-Altera SoCFPGA ECC Manager
-This driver uses the EDAC framework to implement the SOCFPGA ECC Manager.
-The ECC Manager counts and corrects single bit errors and counts/handles
-double bit errors which are uncorrectable.
-
-Cyclone5 and Arria5 ECC Manager
-Required Properties:
-- compatible : Should be "altr,socfpga-ecc-manager"
-- #address-cells: must be 1
-- #size-cells: must be 1
-- ranges : standard definition, should translate from local addresses
-
-Subcomponents:
-
-L2 Cache ECC
-Required Properties:
-- compatible : Should be "altr,socfpga-l2-ecc"
-- reg : Address and size for ECC error interrupt clear registers.
-- interrupts : Should be single bit error interrupt, then double bit error
-       interrupt. Note the rising edge type.
-
-On Chip RAM ECC
-Required Properties:
-- compatible : Should be "altr,socfpga-ocram-ecc"
-- reg : Address and size for ECC error interrupt clear registers.
-- iram : phandle to On-Chip RAM definition.
-- interrupts : Should be single bit error interrupt, then double bit error
-       interrupt. Note the rising edge type.
-
-Example:
-
-       eccmgr: eccmgr@ffd08140 {
-               compatible = "altr,socfpga-ecc-manager";
-               #address-cells = <1>;
-               #size-cells = <1>;
-               ranges;
-
-               l2-ecc@ffd08140 {
-                       compatible = "altr,socfpga-l2-ecc";
-                       reg = <0xffd08140 0x4>;
-                       interrupts = <0 36 1>, <0 37 1>;
-               };
-
-               ocram-ecc@ffd08144 {
-                       compatible = "altr,socfpga-ocram-ecc";
-                       reg = <0xffd08144 0x4>;
-                       iram = <&ocram>;
-                       interrupts = <0 178 1>, <0 179 1>;
-               };
-       };
-
-Arria10 SoCFPGA ECC Manager
-The Arria10 SoC ECC Manager handles the IRQs for each peripheral
-in a shared register instead of individual IRQs like the Cyclone5
-and Arria5. Therefore the device tree is different as well.
-
-Required Properties:
-- compatible : Should be "altr,socfpga-a10-ecc-manager"
-- altr,sysgr-syscon : phandle to Arria10 System Manager Block
-       containing the ECC manager registers.
-- #address-cells: must be 1
-- #size-cells: must be 1
-- interrupts : Should be single bit error interrupt, then double bit error
-       interrupt.
-- interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
-- #interrupt-cells : must be set to 2.
-- ranges : standard definition, should translate from local addresses
-
-Subcomponents:
-
-L2 Cache ECC
-Required Properties:
-- compatible : Should be "altr,socfpga-a10-l2-ecc"
-- reg : Address and size for ECC error interrupt clear registers.
-- interrupts : Should be single bit error interrupt, then double bit error
-       interrupt, in this order.
-
-On-Chip RAM ECC
-Required Properties:
-- compatible : Should be "altr,socfpga-a10-ocram-ecc"
-- reg        : Address and size for ECC block registers.
-- interrupts : Should be single bit error interrupt, then double bit error
-       interrupt, in this order.
-
-Ethernet FIFO ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-eth-mac-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent Ethernet node.
-- interrupts      : Should be single bit error interrupt, then double bit error
-       interrupt, in this order.
-
-NAND FIFO ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-nand-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent NAND node.
-- interrupts      : Should be single bit error interrupt, then double bit error
-       interrupt, in this order.
-
-DMA FIFO ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-dma-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent DMA node.
-- interrupts      : Should be single bit error interrupt, then double bit error
-       interrupt, in this order.
-
-USB FIFO ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-usb-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent USB node.
-- interrupts      : Should be single bit error interrupt, then double bit error
-       interrupt, in this order.
-
-QSPI FIFO ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-qspi-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent QSPI node.
-- interrupts      : Should be single bit error interrupt, then double bit error
-       interrupt, in this order.
-
-SDMMC FIFO ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-sdmmc-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent SD/MMC node.
-- interrupts      : Should be single bit error interrupt, then double bit error
-       interrupt, in this order for port A, and then single bit error interrupt,
-       then double bit error interrupt in this order for port B.
-
-Example:
-
-       eccmgr: eccmgr@ffd06000 {
-               compatible = "altr,socfpga-a10-ecc-manager";
-               altr,sysmgr-syscon = <&sysmgr>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-               interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>,
-                            <0 0 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-controller;
-               #interrupt-cells = <2>;
-               ranges;
-
-               l2-ecc@ffd06010 {
-                       compatible = "altr,socfpga-a10-l2-ecc";
-                       reg = <0xffd06010 0x4>;
-                       interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
-                                    <32 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               ocram-ecc@ff8c3000 {
-                       compatible = "altr,socfpga-a10-ocram-ecc";
-                       reg = <0xff8c3000 0x90>;
-                       interrupts = <1 IRQ_TYPE_LEVEL_HIGH>,
-                                    <33 IRQ_TYPE_LEVEL_HIGH> ;
-               };
-
-               emac0-rx-ecc@ff8c0800 {
-                       compatible = "altr,socfpga-eth-mac-ecc";
-                       reg = <0xff8c0800 0x400>;
-                       altr,ecc-parent = <&gmac0>;
-                       interrupts = <4 IRQ_TYPE_LEVEL_HIGH>,
-                                    <36 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               emac0-tx-ecc@ff8c0c00 {
-                       compatible = "altr,socfpga-eth-mac-ecc";
-                       reg = <0xff8c0c00 0x400>;
-                       altr,ecc-parent = <&gmac0>;
-                       interrupts = <5 IRQ_TYPE_LEVEL_HIGH>,
-                                    <37 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               nand-buf-ecc@ff8c2000 {
-                       compatible = "altr,socfpga-nand-ecc";
-                       reg = <0xff8c2000 0x400>;
-                       altr,ecc-parent = <&nand>;
-                       interrupts = <11 IRQ_TYPE_LEVEL_HIGH>,
-                                    <43 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               nand-rd-ecc@ff8c2400 {
-                       compatible = "altr,socfpga-nand-ecc";
-                       reg = <0xff8c2400 0x400>;
-                       altr,ecc-parent = <&nand>;
-                       interrupts = <13 IRQ_TYPE_LEVEL_HIGH>,
-                                    <45 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               nand-wr-ecc@ff8c2800 {
-                       compatible = "altr,socfpga-nand-ecc";
-                       reg = <0xff8c2800 0x400>;
-                       altr,ecc-parent = <&nand>;
-                       interrupts = <12 IRQ_TYPE_LEVEL_HIGH>,
-                                    <44 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               dma-ecc@ff8c8000 {
-                       compatible = "altr,socfpga-dma-ecc";
-                       reg = <0xff8c8000 0x400>;
-                       altr,ecc-parent = <&pdma>;
-                       interrupts = <10 IRQ_TYPE_LEVEL_HIGH>,
-                                    <42 IRQ_TYPE_LEVEL_HIGH>;
-
-               usb0-ecc@ff8c8800 {
-                       compatible = "altr,socfpga-usb-ecc";
-                       reg = <0xff8c8800 0x400>;
-                       altr,ecc-parent = <&usb0>;
-                       interrupts = <2 IRQ_TYPE_LEVEL_HIGH>,
-                                    <34 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               qspi-ecc@ff8c8400 {
-                       compatible = "altr,socfpga-qspi-ecc";
-                       reg = <0xff8c8400 0x400>;
-                       altr,ecc-parent = <&qspi>;
-                       interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
-                                    <46 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               sdmmc-ecc@ff8c2c00 {
-                       compatible = "altr,socfpga-sdmmc-ecc";
-                       reg = <0xff8c2c00 0x400>;
-                       altr,ecc-parent = <&mmc>;
-                       interrupts = <15 IRQ_TYPE_LEVEL_HIGH>,
-                                    <47 IRQ_TYPE_LEVEL_HIGH>,
-                                    <16 IRQ_TYPE_LEVEL_HIGH>,
-                                    <48 IRQ_TYPE_LEVEL_HIGH>;
-               };
-       };
-
-Stratix10 SoCFPGA ECC Manager (ARM64)
-The Stratix10 SoC ECC Manager handles the IRQs for each peripheral
-in a shared register similar to the Arria10. However, Stratix10 ECC
-requires access to registers that can only be read from Secure Monitor
-with SMC calls. Therefore the device tree is slightly different. Note
-that only 1 interrupt is sent in Stratix10 because the double bit errors
-are treated as SErrors in ARM64 instead of IRQs in ARM32.
-
-Required Properties:
-- compatible : Should be "altr,socfpga-s10-ecc-manager"
-- altr,sysgr-syscon : phandle to Stratix10 System Manager Block
-                     containing the ECC manager registers.
-- interrupts : Should be single bit error interrupt.
-- interrupt-controller : boolean indicator that ECC Manager is an interrupt controller
-- #interrupt-cells : must be set to 2.
-- #address-cells: must be 1
-- #size-cells: must be 1
-- ranges : standard definition, should translate from local addresses
-
-Subcomponents:
-
-SDRAM ECC
-Required Properties:
-- compatible : Should be "altr,sdram-edac-s10"
-- interrupts : Should be single bit error interrupt.
-
-On-Chip RAM ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-s10-ocram-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent OCRAM node.
-- interrupts      : Should be single bit error interrupt.
-
-Ethernet FIFO ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-s10-eth-mac-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent Ethernet node.
-- interrupts      : Should be single bit error interrupt.
-
-NAND FIFO ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-s10-nand-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent NAND node.
-- interrupts      : Should be single bit error interrupt.
-
-DMA FIFO ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-s10-dma-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent DMA node.
-- interrupts      : Should be single bit error interrupt.
-
-USB FIFO ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-s10-usb-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent USB node.
-- interrupts      : Should be single bit error interrupt.
-
-SDMMC FIFO ECC
-Required Properties:
-- compatible      : Should be "altr,socfpga-s10-sdmmc-ecc"
-- reg             : Address and size for ECC block registers.
-- altr,ecc-parent : phandle to parent SD/MMC node.
-- interrupts      : Should be single bit error interrupt for port A
-                   and then single bit error interrupt for port B.
-
-Example:
-
-       eccmgr {
-               compatible = "altr,socfpga-s10-ecc-manager";
-               altr,sysmgr-syscon = <&sysmgr>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-               interrupts = <0 15 4>;
-               interrupt-controller;
-               #interrupt-cells = <2>;
-               ranges;
-
-               sdramedac {
-                       compatible = "altr,sdram-edac-s10";
-                       interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               ocram-ecc@ff8cc000 {
-                       compatible = "altr,socfpga-s10-ocram-ecc";
-                       reg = <ff8cc000 0x100>;
-                       altr,ecc-parent = <&ocram>;
-                       interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               emac0-rx-ecc@ff8c0000 {
-                       compatible = "altr,socfpga-s10-eth-mac-ecc";
-                       reg = <0xff8c0000 0x100>;
-                       altr,ecc-parent = <&gmac0>;
-                       interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               emac0-tx-ecc@ff8c0400 {
-                       compatible = "altr,socfpga-s10-eth-mac-ecc";
-                       reg = <0xff8c0400 0x100>;
-                       altr,ecc-parent = <&gmac0>;
-                       interrupts = <5 IRQ_TYPE_LEVEL_HIGH>'
-               };
-
-               nand-buf-ecc@ff8c8000 {
-                       compatible = "altr,socfpga-s10-nand-ecc";
-                       reg = <0xff8c8000 0x100>;
-                       altr,ecc-parent = <&nand>;
-                       interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               nand-rd-ecc@ff8c8400 {
-                       compatible = "altr,socfpga-s10-nand-ecc";
-                       reg = <0xff8c8400 0x100>;
-                       altr,ecc-parent = <&nand>;
-                       interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               nand-wr-ecc@ff8c8800 {
-                       compatible = "altr,socfpga-s10-nand-ecc";
-                       reg = <0xff8c8800 0x100>;
-                       altr,ecc-parent = <&nand>;
-                       interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               dma-ecc@ff8c9000 {
-                       compatible = "altr,socfpga-s10-dma-ecc";
-                       reg = <0xff8c9000 0x100>;
-                       altr,ecc-parent = <&pdma>;
-                       interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
-
-               usb0-ecc@ff8c4000 {
-                       compatible = "altr,socfpga-s10-usb-ecc";
-                       reg = <0xff8c4000 0x100>;
-                       altr,ecc-parent = <&usb0>;
-                       interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
-               };
-
-               sdmmc-ecc@ff8c8c00 {
-                       compatible = "altr,socfpga-s10-sdmmc-ecc";
-                       reg = <0xff8c8c00 0x100>;
-                       altr,ecc-parent = <&mmc>;
-                       interrupts = <14 IRQ_TYPE_LEVEL_HIGH>,
-                                    <15 IRQ_TYPE_LEVEL_HIGH>;
-               };
-       };
index c9e4afb..0ac6864 100644 (file)
@@ -130,10 +130,13 @@ properties:
           - const: giantec,gt24c32a
           - const: atmel,24c32
       - items:
-          - const: onnn,n24s64b
+          - enum:
+              - onnn,n24s64b
+              - puya,p24c64f
           - const: atmel,24c64
       - items:
           - enum:
+              - giantec,gt24p128e
               - giantec,gt24p128f
               - renesas,r1ex24128
               - samsung,s524ad0xd1
index 557e524..f9ba18f 100644 (file)
@@ -45,6 +45,18 @@ properties:
       Keys provided by the SCU
     $ref: /schemas/input/fsl,scu-key.yaml
 
+  reset-controller:
+    type: object
+    properties:
+      compatible:
+        const: fsl,imx-scu-reset
+      '#reset-cells':
+        const: 1
+    required:
+      - compatible
+      - '#reset-cells'
+    additionalProperties: false
+
   mboxes:
     description:
       A list of phandles of TX MU channels followed by a list of phandles of
diff --git a/Bindings/firmware/google,gs101-acpm-ipc.yaml b/Bindings/firmware/google,gs101-acpm-ipc.yaml
new file mode 100644 (file)
index 0000000..2cdad1b
--- /dev/null
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2024 Linaro Ltd.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/firmware/google,gs101-acpm-ipc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Samsung Exynos ACPM mailbox protocol
+
+maintainers:
+  - Tudor Ambarus <tudor.ambarus@linaro.org>
+
+description: |
+  ACPM (Alive Clock and Power Manager) is a firmware that operates on the
+  APM (Active Power Management) module that handles overall power management
+  activities. ACPM and masters regard each other as independent hardware
+  component and communicate with each other using mailbox messages and
+  shared memory.
+
+  This binding is intended to define the interface the firmware implementing
+  ACPM provides for OSPM in the device tree.
+
+properties:
+  compatible:
+    const: google,gs101-acpm-ipc
+
+  mboxes:
+    maxItems: 1
+
+  shmem:
+    description:
+      List of phandle pointing to the shared memory (SHM) area. The memory
+      contains channels configuration data and the TX/RX ring buffers that
+      are used for passing messages to/from the ACPM firmware.
+    maxItems: 1
+
+required:
+  - compatible
+  - mboxes
+  - shmem
+
+additionalProperties: false
+
+examples:
+  - |
+    power-management {
+        compatible = "google,gs101-acpm-ipc";
+        mboxes = <&ap2apm_mailbox>;
+        shmem = <&apm_sram>;
+    };
diff --git a/Bindings/firmware/thead,th1520-aon.yaml b/Bindings/firmware/thead,th1520-aon.yaml
new file mode 100644 (file)
index 0000000..bbc1832
--- /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/firmware/thead,th1520-aon.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: T-HEAD TH1520 AON (Always-On) Firmware
+
+description: |
+  The Always-On (AON) subsystem in the TH1520 SoC is responsible for managing
+  low-power states, system wakeup events, and power management tasks. It is
+  designed to operate independently in a dedicated power domain, allowing it to
+  remain functional even during the SoC's deep sleep states.
+
+  At the heart of the AON subsystem is the E902, a low-power core that executes
+  firmware responsible for coordinating tasks such as power domain control,
+  clock management, and system wakeup signaling. Communication between the main
+  SoC and the AON subsystem is handled through a mailbox interface, which
+  enables message-based interactions with the AON firmware.
+
+maintainers:
+  - Michal Wilczynski <m.wilczynski@samsung.com>
+
+properties:
+  compatible:
+    const: thead,th1520-aon
+
+  mboxes:
+    maxItems: 1
+
+  mbox-names:
+    items:
+      - const: aon
+
+  "#power-domain-cells":
+    const: 1
+
+required:
+  - compatible
+  - mboxes
+  - mbox-names
+  - "#power-domain-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    aon: aon {
+        compatible = "thead,th1520-aon";
+        mboxes = <&mbox_910t 1>;
+        mbox-names = "aon";
+        #power-domain-cells = <1>;
+    };
index 8cd14a7..b106f52 100644 (file)
@@ -16,6 +16,7 @@ description:
 properties:
   compatible:
     enum:
+      - ibm,fsi2pib
       - ibm,p9-scom
       - ibm,i2cr-scom
 
index b9afd07..b16273e 100644 (file)
@@ -46,6 +46,12 @@ properties:
     minimum: 12
     maximum: 232
 
+patternProperties:
+  "-hog(-[0-9]+)?$":
+    type: object
+    required:
+      - gpio-hog
+
 required:
   - compatible
   - reg
index 33d4e47..7ed5f9c 100644 (file)
@@ -72,6 +72,9 @@ properties:
   "#gpio-cells":
     const: 2
 
+  gpio-ranges:
+    maxItems: 1
+
   marvell,pwm-offset:
     $ref: /schemas/types.yaml#/definitions/uint32
     description: Offset in the register map for the pwm registers (in bytes)
@@ -96,6 +99,13 @@ properties:
       - const: axi
     minItems: 1
 
+patternProperties:
+  "^(.+-hog(-[0-9]+)?)$":
+    type: object
+
+    required:
+      - gpio-hog
+
 required:
   - compatible
   - gpio-controller
index cabda2e..4fb32e9 100644 (file)
@@ -28,6 +28,7 @@ properties:
       - items:
           - enum:
               - fsl,imx93-gpio
+              - fsl,imx94-gpio
               - fsl,imx95-gpio
           - const: fsl,imx8ulp-gpio
 
index cf3b1b2..b681596 100644 (file)
@@ -20,7 +20,10 @@ properties:
           - loongson,ls2k2000-gpio1
           - loongson,ls2k2000-gpio2
           - loongson,ls3a5000-gpio
+          - loongson,ls3a6000-gpio  # Loongson-3A6000 node GPIO
           - loongson,ls7a-gpio
+          - loongson,ls7a2000-gpio1 # LS7A2000 chipset GPIO
+          - loongson,ls7a2000-gpio2 # LS7A2000 ACPI GPIO
       - items:
           - const: loongson,ls2k1000-gpio
           - const: loongson,ls2k-gpio
index 3718103..8bca574 100644 (file)
@@ -73,6 +73,43 @@ properties:
 
   wakeup-source: true
 
+  reset-gpios:
+    maxItems: 1
+    description:
+      GPIO controlling the (reset active LOW) RESET# pin.
+
+      The active polarity of the GPIO must translate to the low state of the
+      RESET# pin on the IC, i.e. if a GPIO is directly routed to the RESET# pin
+      without any inverter, GPIO_ACTIVE_LOW is expected.
+
+      Performing a reset makes all lines initialized to their input (pulled-up)
+      state.
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          not:
+            contains:
+              enum:
+                - nxp,pca9670
+                - nxp,pca9671
+                - nxp,pca9672
+                - nxp,pca9673
+    then:
+      properties:
+        reset-gpios: false
+
+  # lines-initial-states XOR reset-gpios
+  # Performing a reset reinitializes all lines to a known state which
+  # may not match passed lines-initial-states
+  - if:
+      required:
+        - lines-initial-states
+    then:
+      properties:
+        reset-gpios: false
+
 patternProperties:
   "^(.+-hog(-[0-9]+)?)$":
     type: object
index bb93baa..e13e9d6 100644 (file)
@@ -12,7 +12,6 @@ description:
   PS_MODE). Every pin can be configured as input/output.
 
 maintainers:
-  - Mubin Sayyed <mubin.sayyed@amd.com>
   - Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
 
 properties:
index 735c7f0..019bd28 100644 (file)
@@ -17,6 +17,7 @@ properties:
     oneOf:
       - items:
           - enum:
+              - allwinner,sun50i-h616-mali
               - amlogic,meson-g12a-mali
               - mediatek,mt8183-mali
               - mediatek,mt8183b-mali
@@ -24,7 +25,9 @@ properties:
               - realtek,rtd1619-mali
               - renesas,r9a07g044-mali
               - renesas,r9a07g054-mali
+              - renesas,r9a09g057-mali
               - rockchip,px30-mali
+              - rockchip,rk3562-mali
               - rockchip,rk3568-mali
               - rockchip,rk3576-mali
           - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable
@@ -142,6 +145,7 @@ allOf:
             enum:
               - renesas,r9a07g044-mali
               - renesas,r9a07g054-mali
+              - renesas,r9a09g057-mali
     then:
       properties:
         interrupts:
index 0801da3..48daba2 100644 (file)
@@ -45,12 +45,15 @@ properties:
               - samsung,exynos7-mali
           - const: samsung,exynos5433-mali
           - const: arm,mali-t760
+      - items:
+          - enum:
+              - samsung,exynos7870-mali
+          - const: arm,mali-t830
       - items:
           - enum:
               - rockchip,rk3399-mali
           - const: arm,mali-t860
 
-          # "arm,mali-t830"
           # "arm,mali-t880"
 
   reg:
index 385aac7..3830204 100644 (file)
@@ -19,9 +19,11 @@ properties:
           - enum:
               - samsung,exynos5433-chipid
               - samsung,exynos7-chipid
+              - samsung,exynos7870-chipid
           - const: samsung,exynos4210-chipid
       - items:
           - enum:
+              - samsung,exynos2200-chipid
               - samsung,exynos7885-chipid
               - samsung,exynos8895-chipid
               - samsung,exynos9810-chipid
index ce7f8ce..236d8b5 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/adi,ad741x.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index fd79bf2..ddb7285 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/adi,adm1275.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index 011e5b6..1ff44cb 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/adi,ltc2991.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index 7f30cfc..4faebbb 100644 (file)
@@ -23,6 +23,9 @@ properties:
   alarm-gpios:
     maxItems: 1
 
+  fan-supply:
+    description: Power supply for fan
+
   gpio-fan,speed-map:
     $ref: /schemas/types.yaml#/definitions/uint32-matrix
     minItems: 2
index 37e1dc9..aa801ef 100644 (file)
@@ -12,6 +12,8 @@ maintainers:
 properties:
   compatible:
     enum:
+      - lltc,lt7170
+      - lltc,lt7171
       - lltc,ltc2972
       - lltc,ltc2974
       - lltc,ltc2975
@@ -30,6 +32,7 @@ properties:
       - lltc,ltc7880
       - lltc,ltm2987
       - lltc,ltm4664
+      - lltc,ltm4673
       - lltc,ltm4675
       - lltc,ltm4676
       - lltc,ltm4677
@@ -46,6 +49,7 @@ properties:
     description: |
       list of regulators provided by this controller.
       Valid names of regulators depend on number of supplies supported per device:
+      * lt7170, lt7171 : vout0
       * ltc2972 vout0 - vout1
       * ltc2974, ltc2975 : vout0 - vout3
       * ltc2977, ltc2979, ltc2980, ltm2987 : vout0 - vout7
@@ -55,6 +59,7 @@ properties:
       * ltc7880 : vout0 - vout1
       * ltc3883 : vout0
       * ltm4664 : vout0 - vout1
+      * ltm4673 : vout0 - vout3
       * ltm4675, ltm4676, ltm4677, ltm4678 : vout0 - vout1
       * ltm4680, ltm4686 : vout0 - vout1
       * ltm4700 : vout0 - vout1
index 93e86e3..8af0d74 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/maxim,max20730.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index 4f5837a..139a95e 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/maxim,max6639.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index 2c26104..24c7697 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/maxim,max6650.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
diff --git a/Bindings/hwmon/microchip,emc2305.yaml b/Bindings/hwmon/microchip,emc2305.yaml
new file mode 100644 (file)
index 0000000..d3f06eb
--- /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/hwmon/microchip,emc2305.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Microchip EMC2305 SMBus compliant PWM fan controller
+
+maintainers:
+  - Michael Shych <michaelsh@nvidia.com>
+
+description:
+  Microchip EMC2301/2/3/5 pwm controller which supports up to five programmable
+  fan control circuits.
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - microchip,emc2305
+      - items:
+          - enum:
+              - microchip,emc2303
+              - microchip,emc2302
+              - microchip,emc2301
+          - const: microchip,emc2305
+
+  reg:
+    maxItems: 1
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  '#pwm-cells':
+    const: 3
+    description: |
+      Number of cells in a PWM specifier.
+      - cell 0: The PWM frequency
+      - cell 1: The PWM polarity: 0 or PWM_POLARITY_INVERTED
+      - cell 2: The PWM output config:
+           - 0 (Open-Drain)
+           - 1 (Push-Pull)
+
+patternProperties:
+  '^fan@[0-4]$':
+    $ref: fan-common.yaml#
+    unevaluatedProperties: false
+    properties:
+      reg:
+        description:
+          The fan number used to determine the associated PWM channel.
+        maxItems: 1
+
+    required:
+      - reg
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/pwm/pwm.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        fan_controller: fan-controller@2f {
+            compatible = "microchip,emc2305";
+            reg = <0x2f>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+            #pwm-cells = <3>;
+
+            fan@0 {
+                reg = <0x0>;
+                pwms = <&fan_controller 26000 PWM_POLARITY_INVERTED 1>;
+                #cooling-cells = <2>;
+            };
+
+            fan@1 {
+                reg = <0x1>;
+                pwms = <&fan_controller 26000 0 1>;
+                #cooling-cells = <2>;
+            };
+
+            fan@2 {
+                reg = <0x2>;
+                pwms = <&fan_controller 26000 0 1>;
+                #cooling-cells = <2>;
+            };
+
+            fan@3 {
+                reg = <0x3>;
+                pwms = <&fan_controller 26000 0 1>;
+                #cooling-cells = <2>;
+            };
+
+            fan@4 {
+                reg = <0x4>;
+                pwms = <&fan_controller 26000 0 1>;
+                #cooling-cells = <2>;
+            };
+        };
+    };
+...
index 6e59c8f..4feb769 100644 (file)
@@ -32,6 +32,9 @@ properties:
       - national,lm89
       - national,lm90
       - national,lm99
+      - nuvoton,nct7716
+      - nuvoton,nct7717
+      - nuvoton,nct7718
       - nxp,sa56004
       - onnn,nct1008
       - ti,tmp451
@@ -120,6 +123,8 @@ allOf:
               - dallas,max6659
               - dallas,max6695
               - dallas,max6696
+              - nuvoton,nct7716
+              - nuvoton,nct7717
     then:
       patternProperties:
         "^channel@([0-2])$":
@@ -155,6 +160,7 @@ allOf:
               - national,lm89
               - national,lm90
               - national,lm99
+              - nuvoton,nct7718
               - nxp,sa56004
               - winbond,w83l771
     then:
index 3d0146e..b8e500e 100644 (file)
@@ -76,7 +76,7 @@ properties:
       - const: murata,ncp03wf104
       - const: murata,ncp15xh103
       - const: samsung,1404-001221
-      # Deprecated "ntp," compatible strings
+      # Deprecated "ntc," compatible strings
       - const: ntc,ncp15wb473
         deprecated: true
       - const: ntc,ncp18wb473
index e3db642..2444702 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/nuvoton,nct6775.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index c1e5ded..625fcf5 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/nuvoton,nct7363.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index cd8dcd7..c16a332 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/nuvoton,nct7802.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index e8feee3..f8bea1c 100644 (file)
@@ -28,6 +28,15 @@ properties:
   reg:
     maxItems: 1
 
+  gpio-controller: true
+
+  gpio-line-names:
+    minItems: 84
+    maxItems: 84
+
+  '#gpio-cells':
+    const: 1
+
 required:
   - compatible
   - reg
index a320354..78e3d97 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/ti,adc128d818.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index 926be9a..fb80456 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/ti,ads7828.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index 05a9cb3..bc03781 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/ti,ina2xx.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
@@ -27,6 +26,7 @@ properties:
       - ti,ina226
       - ti,ina230
       - ti,ina231
+      - ti,ina233
       - ti,ina237
       - ti,ina238
       - ti,ina260
@@ -75,12 +75,41 @@ properties:
       the alert polarity to active-high.
     $ref: /schemas/types.yaml#/definitions/flag
 
+  ti,maximum-expected-current-microamp:
+    description: |
+      This value indicates the maximum current in microamps that you can
+      expect to measure with ina233 in your circuit.
+
+      This value will be used to calculate the Current_LSB and current/power
+      coefficient for the pmbus and to calibrate the IC.
+    minimum: 32768
+    maximum: 4294967295
+    default: 32768000
+
 required:
   - compatible
   - reg
 
 allOf:
   - $ref: hwmon-common.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - silergy,sy24655
+              - ti,ina209
+              - ti,ina219
+              - ti,ina220
+              - ti,ina226
+              - ti,ina230
+              - ti,ina231
+              - ti,ina237
+              - ti,ina238
+              - ti,ina260
+    then:
+      properties:
+        ti,maximum-expected-current-microamp: false
 
 unevaluatedProperties: false
 
index f553235..63d8cf4 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/ti,lm87.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index 227858e..cba5b4a 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/ti,tmp513.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index f58248c..ee7de53 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/ti,tps23861.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index 31ce77a..6971ecb 100644 (file)
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-
 $id: http://devicetree.org/schemas/hwmon/winbond,w83781d.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
index 70cc2ee..8d47b29 100644 (file)
@@ -30,6 +30,7 @@ properties:
       - items:
           - enum:
               - samsung,exynos5433-hsi2c
+              - samsung,exynos7870-hsi2c
               - tesla,fsd-hsi2c
           - const: samsung,exynos7-hsi2c
       - items:
index 1dcb9c7..969030a 100644 (file)
@@ -26,6 +26,7 @@ properties:
               - fsl,imx8qm-lpi2c
               - fsl,imx8ulp-lpi2c
               - fsl,imx93-lpi2c
+              - fsl,imx94-lpi2c
               - fsl,imx95-lpi2c
           - const: fsl,imx7ulp-lpi2c
 
index a9dae5b..8101afa 100644 (file)
@@ -37,6 +37,7 @@ properties:
               - rockchip,px30-i2c
               - rockchip,rk3308-i2c
               - rockchip,rk3328-i2c
+              - rockchip,rk3562-i2c
               - rockchip,rk3568-i2c
               - rockchip,rk3576-i2c
               - rockchip,rk3588-i2c
index f439475..758d8f6 100644 (file)
@@ -40,6 +40,9 @@ properties:
       - const: tx
       - const: rx
 
+  interconnects:
+    maxItems: 1
+
   interrupts:
     maxItems: 1
 
@@ -52,9 +55,15 @@ properties:
       - const: default
       - const: sleep
 
+  power-domains:
+    maxItems: 1
+
   reg:
     maxItems: 1
 
+  required-opps:
+    maxItems: 1
+
 required:
   - compatible
   - clock-names
@@ -67,7 +76,9 @@ unevaluatedProperties: false
 examples:
   - |
     #include <dt-bindings/clock/qcom,gcc-msm8998.h>
+    #include <dt-bindings/interconnect/qcom,msm8996.h>
     #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/power/qcom-rpmpd.h>
 
     i2c@c175000 {
         compatible = "qcom,i2c-qup-v2.2.1";
@@ -82,6 +93,9 @@ examples:
         pinctrl-names = "default", "sleep";
         pinctrl-0 = <&blsp1_i2c1_default>;
         pinctrl-1 = <&blsp1_i2c1_sleep>;
+        power-domains = <&rpmpd MSM8909_VDDCX>;
+        required-opps = <&rpmpd_opp_svs_krait>;
+        interconnects = <&pnoc MASTER_BLSP_1 &bimc SLAVE_EBI_CH0>;
         clock-frequency = <400000>;
 
         #address-cells = <1>;
index bbc5684..6ba7d79 100644 (file)
@@ -22,6 +22,7 @@ properties:
           - samsung,exynos5-sata-phy-i2c
       - items:
           - enum:
+              - samsung,exynos7870-i2c
               - samsung,exynos7885-i2c
               - samsung,exynos850-i2c
           - const: samsung,s3c2440-i2c
index e5d0526..bc5d0fb 100644 (file)
@@ -27,6 +27,11 @@ properties:
     oneOf:
       - description: Generic Synopsys DesignWare I2C controller
         const: snps,designware-i2c
+      - description: Renesas RZ/N1D I2C controller
+        items:
+          - 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
diff --git a/Bindings/i2c/spacemit,k1-i2c.yaml b/Bindings/i2c/spacemit,k1-i2c.yaml
new file mode 100644 (file)
index 0000000..3d6aefb
--- /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/i2c/spacemit,k1-i2c.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: I2C controller embedded in SpacemiT's K1 SoC
+
+maintainers:
+  - Troy Mitchell <troymitchell988@gmail.com>
+
+properties:
+  compatible:
+    const: spacemit,k1-i2c
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: I2C Functional Clock
+      - description: APB Bus Clock
+
+  clock-names:
+    items:
+      - const: func
+      - const: bus
+
+  clock-frequency:
+    description: |
+      K1 support three different modes which running different frequencies
+      standard speed mode: up to 100000 (100Hz)
+      fast speed mode    : up to 400000 (400Hz)
+      high speed mode    : up to 3300000 (3.3Mhz)
+    default: 400000
+    maximum: 3300000
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    i2c@d4010800 {
+        compatible = "spacemit,k1-i2c";
+        reg = <0xd4010800 0x38>;
+        interrupt-parent = <&plic>;
+        interrupts = <36>;
+        clocks =<&ccu 32>, <&ccu 84>;
+        clock-names = "func", "bus";
+        clock-frequency = <100000>;
+    };
+
+...
index 8c2e35f..58d32ce 100644 (file)
@@ -47,6 +47,11 @@ properties:
     $ref: /schemas/types.yaml#/definitions/string
     deprecated: true
 
+  mux-states:
+    description:
+      mux controller node to route the I2C signals from SoC to clients.
+    maxItems: 1
+
 required:
   - compatible
   - reg
@@ -87,4 +92,5 @@ examples:
         interrupts = <GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>;
         #address-cells = <1>;
         #size-cells = <0>;
+        mux-states = <&i2c_mux 1>;
     };
index c56ff77..4fbdcda 100644 (file)
@@ -14,7 +14,9 @@ allOf:
 
 properties:
   compatible:
-    const: silvaco,i3c-master-v1
+    enum:
+      - nuvoton,npcm845-i3c
+      - silvaco,i3c-master-v1
 
   reg:
     maxItems: 1
index 4fc13e3..5f64673 100644 (file)
@@ -34,6 +34,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  power-domains:
+    maxItems: 1
+
 required:
   - compatible
   - reg
diff --git a/Bindings/iio/adc/adi,ad4030.yaml b/Bindings/iio/adc/adi,ad4030.yaml
new file mode 100644 (file)
index 0000000..54e7349
--- /dev/null
@@ -0,0 +1,110 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2024 Analog Devices Inc.
+# Copyright 2024 BayLibre, SAS.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/adi,ad4030.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD4030 and AD4630 ADC families
+
+maintainers:
+  - Michael Hennerich <michael.hennerich@analog.com>
+  - Nuno Sa <nuno.sa@analog.com>
+
+description: |
+  Analog Devices AD4030 single channel and AD4630/AD4632 dual channel precision
+  SAR ADC families
+
+  * https://www.analog.com/media/en/technical-documentation/data-sheets/ad4030-24-4032-24.pdf
+  * https://www.analog.com/media/en/technical-documentation/data-sheets/ad4630-24_ad4632-24.pdf
+  * https://www.analog.com/media/en/technical-documentation/data-sheets/ad4630-16-4632-16.pdf
+
+properties:
+  compatible:
+    enum:
+      - adi,ad4030-24
+      - adi,ad4032-24
+      - adi,ad4630-16
+      - adi,ad4630-24
+      - adi,ad4632-16
+      - adi,ad4632-24
+
+  reg:
+    maxItems: 1
+
+  spi-max-frequency:
+    maximum: 102040816
+
+  spi-rx-bus-width:
+    enum: [1, 2, 4]
+
+  vdd-5v-supply: true
+  vdd-1v8-supply: true
+  vio-supply: true
+
+  ref-supply:
+    description:
+      Optional External unbuffered reference. Used when refin-supply is not
+      connected.
+
+  refin-supply:
+    description:
+      Internal buffered Reference. Used when ref-supply is not connected.
+
+  cnv-gpios:
+    description:
+      The Convert Input (CNV). It initiates the sampling conversions.
+    maxItems: 1
+
+  reset-gpios:
+    description:
+      The Reset Input (/RST). Used for asynchronous device reset.
+    maxItems: 1
+
+  interrupts:
+    description:
+      The BUSY pin is used to signal that the conversions results are available
+      to be transferred when in SPI Clocking Mode. This nodes should be
+      connected to an interrupt that is triggered when the BUSY line goes low.
+    maxItems: 1
+
+  interrupt-names:
+    const: busy
+
+required:
+  - compatible
+  - reg
+  - vdd-5v-supply
+  - vdd-1v8-supply
+  - vio-supply
+  - cnv-gpios
+
+oneOf:
+  - required:
+      - ref-supply
+  - required:
+      - refin-supply
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        adc@0 {
+            compatible = "adi,ad4030-24";
+            reg = <0>;
+            spi-max-frequency = <80000000>;
+            vdd-5v-supply = <&supply_5V>;
+            vdd-1v8-supply = <&supply_1_8V>;
+            vio-supply = <&supply_1_8V>;
+            ref-supply = <&supply_5V>;
+            cnv-gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
+            reset-gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
+        };
+    };
index 7d2229d..cbde7a0 100644 (file)
@@ -84,6 +84,10 @@ properties:
     description: The Reset Input (RESET). Should be configured GPIO_ACTIVE_LOW.
     maxItems: 1
 
+  pwms:
+    description: PWM signal connected to the CNV pin.
+    maxItems: 1
+
   interrupts:
     minItems: 1
     items:
@@ -106,6 +110,15 @@ properties:
       The first cell is the GPn number: 0 to 3.
       The second cell takes standard GPIO flags.
 
+  '#trigger-source-cells':
+    description: |
+      First cell indicates the output signal: 0 = BUSY, 1 = ALERT.
+      Second cell indicates which GPn pin is used: 0, 2 or 3.
+
+      For convenience, macros for these values are available in
+      dt-bindings/iio/adc/adi,ad4695.h.
+    const: 2
+
   "#address-cells":
     const: 1
 
diff --git a/Bindings/iio/adc/adi,ad4851.yaml b/Bindings/iio/adc/adi,ad4851.yaml
new file mode 100644 (file)
index 0000000..c6676d9
--- /dev/null
@@ -0,0 +1,153 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2024 Analog Devices Inc.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/adi,ad4851.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD485X family
+
+maintainers:
+  - Sergiu Cuciurean <sergiu.cuciurean@analog.com>
+  - Dragos Bogdan <dragos.bogdan@analog.com>
+  - Antoniu Miclaus <antoniu.miclaus@analog.com>
+
+description: |
+  Analog Devices AD485X fully buffered, 8-channel simultaneous sampling,
+  16/20-bit, 1 MSPS data acquisition system (DAS) with differential, wide
+  common-mode range inputs.
+
+  https://www.analog.com/media/en/technical-documentation/data-sheets/ad4855.pdf
+  https://www.analog.com/media/en/technical-documentation/data-sheets/ad4856.pdf
+  https://www.analog.com/media/en/technical-documentation/data-sheets/ad4857.pdf
+  https://www.analog.com/media/en/technical-documentation/data-sheets/ad4858.pdf
+
+$ref: /schemas/spi/spi-peripheral-props.yaml#
+
+properties:
+  compatible:
+    enum:
+      - adi,ad4851
+      - adi,ad4852
+      - adi,ad4853
+      - adi,ad4854
+      - adi,ad4855
+      - adi,ad4856
+      - adi,ad4857
+      - adi,ad4858
+      - adi,ad4858i
+
+  reg:
+    maxItems: 1
+
+  vcc-supply: true
+
+  vee-supply: true
+
+  vdd-supply: true
+
+  vddh-supply: true
+
+  vddl-supply: true
+
+  vio-supply: true
+
+  vrefbuf-supply: true
+
+  vrefio-supply: true
+
+  pwms:
+    description: PWM connected to the CNV pin.
+    maxItems: 1
+
+  io-backends:
+    maxItems: 1
+
+  pd-gpios:
+    maxItems: 1
+
+  spi-max-frequency:
+    maximum: 25000000
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+patternProperties:
+  "^channel(@[0-7])?$":
+    $ref: adc.yaml
+    type: object
+    description: Represents the channels which are connected to the ADC.
+
+    properties:
+      reg:
+        description:
+          The channel number, as specified in the datasheet (from 0 to 7).
+        minimum: 0
+        maximum: 7
+
+      diff-channels:
+        description:
+          Each channel can be configured as a bipolar differential channel.
+          The ADC uses the same positive and negative inputs for this.
+          This property must be specified as 'reg' (or the channel number) for
+          both positive and negative inputs (i.e. diff-channels = <reg reg>).
+          Since the configuration is bipolar differential, the 'bipolar'
+          property is required.
+        items:
+          minimum: 0
+          maximum: 7
+
+      bipolar: true
+
+    required:
+      - reg
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - vcc-supply
+  - vee-supply
+  - vdd-supply
+  - vio-supply
+  - pwms
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        adc@0{
+            #address-cells = <1>;
+            #size-cells = <0>;
+            compatible = "adi,ad4858";
+            reg = <0>;
+            spi-max-frequency = <10000000>;
+            vcc-supply = <&vcc>;
+            vdd-supply = <&vdd>;
+            vee-supply = <&vee>;
+            vddh-supply = <&vddh>;
+            vddl-supply = <&vddl>;
+            vio-supply = <&vio>;
+            pwms = <&pwm_gen 0 0>;
+            io-backends = <&iio_backend>;
+
+            channel@0 {
+              reg = <0>;
+              diff-channels = <0 0>;
+              bipolar;
+            };
+
+            channel@1 {
+              reg = <1>;
+            };
+        };
+    };
+...
diff --git a/Bindings/iio/adc/adi,ad7191.yaml b/Bindings/iio/adc/adi,ad7191.yaml
new file mode 100644 (file)
index 0000000..801ed31
--- /dev/null
@@ -0,0 +1,149 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright 2025 Analog Devices Inc.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/adi,ad7191.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD7191 ADC
+
+maintainers:
+  - Alisa-Dariana Roman <alisa.roman@analog.com>
+
+description: |
+  Bindings for the Analog Devices AD7191 ADC device. Datasheet can be
+  found here:
+  https://www.analog.com/media/en/technical-documentation/data-sheets/AD7191.pdf
+  The device's PDOWN pin must be connected to the SPI controller's chip select
+  pin.
+
+properties:
+  compatible:
+    enum:
+      - adi,ad7191
+
+  reg:
+    maxItems: 1
+
+  spi-cpol: true
+
+  spi-cpha: true
+
+  clocks:
+    maxItems: 1
+    description:
+      Must be present when CLKSEL pin is tied HIGH to select external clock
+      source (either a crystal between MCLK1 and MCLK2 pins, or a
+      CMOS-compatible clock driving MCLK2 pin). Must be absent when CLKSEL pin
+      is tied LOW to use the internal 4.92MHz clock.
+
+  interrupts:
+    maxItems: 1
+
+  avdd-supply:
+    description: AVdd voltage supply
+
+  dvdd-supply:
+    description: DVdd voltage supply
+
+  vref-supply:
+    description: Vref voltage supply
+
+  odr-gpios:
+    description:
+      ODR1 and ODR2 pins for output data rate selection. Should be defined if
+      adi,odr-value is absent.
+    minItems: 2
+    maxItems: 2
+
+  adi,odr-value:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: |
+      Should be present if ODR pins are pin-strapped. Possible values:
+      120 Hz (ODR1=0, ODR2=0)
+      60 Hz (ODR1=0, ODR2=1)
+      50 Hz (ODR1=1, ODR2=0)
+      10 Hz (ODR1=1, ODR2=1)
+      If defined, odr-gpios must be absent.
+    enum: [120, 60, 50, 10]
+
+  pga-gpios:
+    description:
+      PGA1 and PGA2 pins for gain selection. Should be defined if adi,pga-value
+      is absent.
+    minItems: 2
+    maxItems: 2
+
+  adi,pga-value:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: |
+      Should be present if PGA pins are pin-strapped. Possible values:
+      Gain 1 (PGA1=0, PGA2=0)
+      Gain 8 (PGA1=0, PGA2=1)
+      Gain 64 (PGA1=1, PGA2=0)
+      Gain 128 (PGA1=1, PGA2=1)
+      If defined, pga-gpios must be absent.
+    enum: [1, 8, 64, 128]
+
+  temp-gpios:
+    description: TEMP pin for temperature sensor enable.
+    maxItems: 1
+
+  chan-gpios:
+    description: CHAN pin for input channel selection.
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - avdd-supply
+  - dvdd-supply
+  - vref-supply
+  - spi-cpol
+  - spi-cpha
+  - temp-gpios
+  - chan-gpios
+
+allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+  - oneOf:
+      - required:
+          - adi,odr-value
+      - required:
+          - odr-gpios
+  - oneOf:
+      - required:
+          - adi,pga-value
+      - required:
+          - pga-gpios
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        adc@0 {
+            compatible = "adi,ad7191";
+            reg = <0>;
+            spi-max-frequency = <1000000>;
+            spi-cpol;
+            spi-cpha;
+            clocks = <&ad7191_mclk>;
+            interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
+            interrupt-parent = <&gpio>;
+            avdd-supply = <&avdd>;
+            dvdd-supply = <&dvdd>;
+            vref-supply = <&vref>;
+            adi,pga-value = <1>;
+            odr-gpios = <&gpio 23 GPIO_ACTIVE_HIGH>, <&gpio 24 GPIO_ACTIVE_HIGH>;
+            temp-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
+            chan-gpios = <&gpio 27 GPIO_ACTIVE_HIGH>;
+        };
+    };
index ada0800..ff4f5c2 100644 (file)
@@ -27,6 +27,7 @@ description: |
   * https://www.analog.com/en/products/ad7388-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
 
 
 $ref: /schemas/spi/spi-peripheral-props.yaml#
@@ -50,6 +51,7 @@ properties:
       - adi,ad7388-4
       - adi,adaq4370-4
       - adi,adaq4380-4
+      - adi,adaq4381-4
 
   reg:
     maxItems: 1
@@ -201,6 +203,7 @@ allOf:
             - adi,ad7380-4
             - adi,adaq4370-4
             - adi,adaq4380-4
+            - adi,adaq4381-4
     then:
       properties:
         refio-supply: false
@@ -218,6 +221,7 @@ allOf:
           enum:
             - adi,adaq4370-4
             - adi,adaq4380-4
+            - adi,adaq4381-4
     then:
       required:
         - vs-p-supply
index e1f450b..cf74f84 100644 (file)
@@ -17,13 +17,25 @@ description: |
   interface for the actual ADC, while this IP core will interface
   to the data-lines of the ADC and handle the streaming of data into
   memory via DMA.
+  In some cases, the AXI ADC interface is used to perform specialized
+  operation to a particular ADC, e.g access the physical bus through
+  specific registers to write ADC registers.
+  In this case, we use a different compatible which indicates the target
+  IP core's name.
+  The following IP is currently supported:
+    - AXI AD7606x: specialized version of the IP core for all the chips from
+      the ad7606 family.
 
   https://wiki.analog.com/resources/fpga/docs/axi_adc_ip
+  https://analogdevicesinc.github.io/hdl/library/axi_ad485x/index.html
+  http://analogdevicesinc.github.io/hdl/library/axi_ad7606x/index.html
 
 properties:
   compatible:
     enum:
       - adi,axi-adc-10.0.a
+      - adi,axi-ad7606x
+      - adi,axi-ad485x
 
   reg:
     maxItems: 1
@@ -47,17 +59,48 @@ properties:
   '#io-backend-cells':
     const: 0
 
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+patternProperties:
+  "^adc@[0-9a-f]+$":
+    type: object
+    properties:
+      reg:
+        maxItems: 1
+    additionalProperties: true
+    required:
+      - compatible
+      - reg
+
 required:
   - compatible
   - dmas
   - reg
   - clocks
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          not:
+            contains:
+              const: adi,axi-ad7606x
+    then:
+      properties:
+        '#address-cells': false
+        '#size-cells': false
+      patternProperties:
+        "^adc@[0-9a-f]+$": false
+
 additionalProperties: false
 
 examples:
   - |
-    axi-adc@44a00000 {
+    adc@44a00000 {
         compatible = "adi,axi-adc-10.0.a";
         reg = <0x44a00000 0x10000>;
         dmas = <&rx_dma 0>;
@@ -65,4 +108,31 @@ examples:
         clocks = <&axi_clk>;
         #io-backend-cells = <0>;
     };
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    parallel_bus_controller@44a00000 {
+        compatible = "adi,axi-ad7606x";
+        reg = <0x44a00000 0x10000>;
+        dmas = <&rx_dma 0>;
+        dma-names = "rx";
+        clocks = <&ext_clk>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        adc@0 {
+            compatible = "adi,ad7606b";
+            reg = <0>;
+            pwms = <&axi_pwm_gen 0 0>;
+            pwm-names = "convst1";
+            avcc-supply = <&adc_vref>;
+            vdrive-supply = <&vdd_supply>;
+            reset-gpios = <&gpio0 91 GPIO_ACTIVE_HIGH>;
+            standby-gpios = <&gpio0 90 GPIO_ACTIVE_LOW>;
+            adi,range-gpios = <&gpio0 89 GPIO_ACTIVE_HIGH>;
+            adi,oversampling-ratio-gpios = <&gpio0 88 GPIO_ACTIVE_HIGH
+                            &gpio0 87 GPIO_ACTIVE_HIGH
+                            &gpio0 86 GPIO_ACTIVE_HIGH>;
+            io-backends = <&parallel_bus_controller>;
+        };
+    };
 ...
index dfc3f51..c2e5ff4 100644 (file)
@@ -19,7 +19,14 @@ description:
 
 properties:
   compatible:
-    const: nxp,imx93-adc
+    oneOf:
+      - enum:
+          - nxp,imx93-adc
+      - items:
+          - enum:
+              - nxp,imx94-adc
+              - nxp,imx95-adc
+          - const: nxp,imx93-adc
 
   reg:
     maxItems: 1
index fd93ed3..41e0c56 100644 (file)
@@ -15,6 +15,8 @@ properties:
       - const: rockchip,saradc
       - const: rockchip,rk3066-tsadc
       - const: rockchip,rk3399-saradc
+      - const: rockchip,rk3528-saradc
+      - const: rockchip,rk3562-saradc
       - const: rockchip,rk3588-saradc
       - items:
           - const: rockchip,rk3576-saradc
diff --git a/Bindings/iio/adc/ti,ads7138.yaml b/Bindings/iio/adc/ti,ads7138.yaml
new file mode 100644 (file)
index 0000000..a51893e
--- /dev/null
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/ti,ads7138.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments ADS7128/ADS7138 analog-to-digital converter (ADC)
+
+maintainers:
+  - Tobias Sperling <tobias.sperling@softing.com>
+
+description: |
+  The ADS7128 and ADS7138 chips are 12-bit, 8 channel analog-to-digital
+  converters (ADC) with build-in digital window comparator (DWC), using the
+  I2C interface.
+  ADS7128 differs in the addition of further hardware features, like a
+  root-mean-square (RMS) and a zero-crossing-detect (ZCD) module.
+
+  Datasheets:
+    https://www.ti.com/product/ADS7128
+    https://www.ti.com/product/ADS7138
+
+properties:
+  compatible:
+    enum:
+      - ti,ads7128
+      - ti,ads7138
+
+  reg:
+    maxItems: 1
+
+  avdd-supply:
+    description:
+      The regulator used as analog supply voltage as well as reference voltage.
+
+  interrupts:
+    description:
+      Interrupt on ALERT pin, triggers on low level.
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - avdd-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        adc@10 {
+            compatible = "ti,ads7138";
+            reg = <0x10>;
+            avdd-supply = <&reg_stb_3v3>;
+            interrupt-parent = <&gpio2>;
+            interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
+        };
+    };
+...
index 8cbad7e..a403392 100644 (file)
@@ -193,7 +193,6 @@ additionalProperties: false
 
 examples:
   - |
-    #include <dt-bindings/clock/xlnx-zynqmp-clk.h>
 
     bus {
         #address-cells = <2>;
@@ -204,7 +203,7 @@ examples:
             interrupt-parent = <&gic>;
             interrupts = <0 56 4>;
             reg = <0x0 0xffa50000 0x0 0x800>;
-            clocks = <&zynqmp_clk AMS_REF>;
+            clocks = <&zynqmp_clk 70>;
             #address-cells = <1>;
             #size-cells = <1>;
             #io-channel-cells = <1>;
index 9eb9928..3e323f1 100644 (file)
@@ -55,18 +55,18 @@ examples:
         #address-cells = <1>;
         #size-cells = <0>;
         dac@0 {
-           reg = <0>;
-           compatible = "adi,ad5390-5";
-           vref-supply = <&dacvref>;
+            reg = <0>;
+            compatible = "adi,ad5390-5";
+            vref-supply = <&dacvref>;
         };
     };
   - |
     i2c {
-       #address-cells = <1>;
-       #size-cells = <0>;
-       dac@42 {
-          reg = <0x42>;
-          compatible = "adi,ad5380-3";
-       };
+        #address-cells = <1>;
+        #size-cells = <0>;
+        dac@42 {
+            reg = <0x42>;
+            compatible = "adi,ad5380-3";
+        };
     };
 ...
index 1cb2ada..53d6074 100644 (file)
@@ -30,8 +30,9 @@ properties:
 
   clock-names:
     description:
-      Must be "clkin"
-    maxItems: 1
+      Must be "clkin" if the input reference is single ended or "clkin-diff"
+      if the input reference is differential.
+    enum: [clkin, clkin-diff]
 
   adi,mute-till-lock-en:
     type: boolean
index ed0ea93..1e25cf7 100644 (file)
@@ -43,13 +43,13 @@ additionalProperties: false
 examples:
   - |
     i2c {
-       #address-cells = <1>;
-       #size-cells = <0>;
+        #address-cells = <1>;
+        #size-cells = <0>;
 
-       temperature-sensor@43 {
-           compatible = "sciosense,ens210";
-           reg = <0x43>;
-       };
+        temperature-sensor@43 {
+            compatible = "sciosense,ens210";
+            reg = <0x43>;
+        };
     };
 ...
 
diff --git a/Bindings/iio/imu/adi,adis16550.yaml b/Bindings/iio/imu/adi,adis16550.yaml
new file mode 100644 (file)
index 0000000..a4c273c
--- /dev/null
@@ -0,0 +1,74 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/imu/adi,adis16550.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices ADIS16550 and similar IMUs
+
+maintainers:
+  - Nuno Sa <nuno.sa@analog.com>
+  - Ramona Gradinariu <ramona.gradinariu@analog.com>
+  - Antoniu Miclaus <antoniu.miclaus@analog.com>
+  - Robert Budai <robert.budai@analog.com>
+
+properties:
+  compatible:
+    enum:
+      - adi,adis16550
+
+  reg:
+    maxItems: 1
+
+  spi-cpha: true
+
+  spi-cpol: true
+
+  spi-max-frequency:
+    maximum: 15000000
+
+  vdd-supply: true
+
+  interrupts:
+    maxItems: 1
+
+  reset-gpios:
+    description:
+      Active low RESET pin.
+    maxItems: 1
+
+  clocks:
+    description: If not provided, then the internal clock is used.
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - spi-cpha
+  - spi-cpol
+  - spi-max-frequency
+  - vdd-supply
+
+allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        imu@0 {
+            compatible = "adi,adis16550";
+            reg = <0>;
+            spi-max-frequency = <15000000>;
+            spi-cpol;
+            spi-cpha;
+            vdd-supply = <&vdd>;
+            interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
+            interrupt-parent = <&gpio>;
+        };
+    };
diff --git a/Bindings/iio/light/brcm,apds9160.yaml b/Bindings/iio/light/brcm,apds9160.yaml
new file mode 100644 (file)
index 0000000..bb1cc44
--- /dev/null
@@ -0,0 +1,78 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/light/brcm,apds9160.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom Combined Proximity & Ambient light sensor
+
+maintainers:
+  - Mikael Gonella-Bolduc <m.gonella.bolduc@gmail.com>
+
+description: |
+  Datasheet: https://docs.broadcom.com/docs/APDS-9160-003-DS
+
+properties:
+  compatible:
+    enum:
+      - brcm,apds9160
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  vdd-supply: true
+
+  ps-cancellation-duration:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      Proximity sensor cancellation pulse duration in half clock cycles.
+      This parameter determines a cancellation pulse duration.
+      The cancellation is applied in the integration phase to cancel out
+      unwanted reflected light from very near objects such as tempered glass
+      in front of the sensor.
+    default: 0
+    maximum: 63
+
+  ps-cancellation-current-picoamp:
+    description:
+      Proximity sensor crosstalk cancellation current in picoampere.
+      This parameter adjusts the current in steps of 2400 pA up to 276000 pA.
+      The provided value must be a multiple of 2400 and in one of these ranges
+      [60000 - 96000]
+      [120000 - 156000]
+      [180000 - 216000]
+      [240000 - 276000]
+      This parameter is used in conjunction with the cancellation duration.
+    minimum: 60000
+    maximum: 276000
+    multipleOf: 2400
+
+required:
+  - compatible
+  - reg
+  - vdd-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        light-sensor@53 {
+            compatible = "brcm,apds9160";
+            reg = <0x53>;
+            vdd-supply = <&vdd_reg>;
+            interrupts = <29 IRQ_TYPE_EDGE_FALLING>;
+            interrupt-parent = <&pinctrl>;
+            ps-cancellation-duration = <10>;
+            ps-cancellation-current-picoamp = <62400>;
+        };
+    };
+...
index a3a9795..f1048c3 100644 (file)
@@ -4,14 +4,16 @@
 $id: http://devicetree.org/schemas/iio/light/dynaimage,al3010.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Dyna-Image AL3010 sensor
+title: Dyna-Image AL3000a/AL3010 sensor
 
 maintainers:
   - David Heidelberg <david@ixit.cz>
 
 properties:
   compatible:
-    const: dynaimage,al3010
+    enum:
+      - dynaimage,al3000a
+      - dynaimage,al3010
 
   reg:
     maxItems: 1
diff --git a/Bindings/iio/magnetometer/silabs,si7210.yaml b/Bindings/iio/magnetometer/silabs,si7210.yaml
new file mode 100644 (file)
index 0000000..d4a3f79
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/magnetometer/silabs,si7210.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Si7210 magnetic position and temperature sensor
+
+maintainers:
+  - Antoni Pokusinski <apokusinski01@gmail.com>
+
+description: |
+  Silabs Si7210 I2C Hall effect magnetic position and temperature sensor.
+  https://www.silabs.com/documents/public/data-sheets/si7210-datasheet.pdf
+
+properties:
+  compatible:
+    const: silabs,si7210
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  vdd-supply:
+    description: Regulator that provides power to the sensor
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        magnetometer@30 {
+            compatible = "silabs,si7210";
+            reg = <0x30>;
+            interrupt-parent = <&gpio1>;
+            interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
+            vdd-supply = <&vdd_3v3_reg>;
+        };
+    };
index 7cc365e..7c0c6ab 100644 (file)
@@ -40,15 +40,15 @@ unevaluatedProperties: false
 examples:
   - |
     spi {
-       #address-cells = <1>;
-       #size-cells = <0>;
-
-       temperature-sensor@0 {
-           compatible = "maxim,max31865";
-           reg = <0>;
-           spi-max-frequency = <400000>;
-           spi-cpha;
-           maxim,3-wire;
-       };
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        temperature-sensor@0 {
+            compatible = "maxim,max31865";
+            reg = <0>;
+            spi-max-frequency = <400000>;
+            spi-cpha;
+            maxim,3-wire;
+        };
     };
 ...
index 58aa154..fbba5e9 100644 (file)
@@ -44,8 +44,8 @@ examples:
         #size-cells = <0>;
 
         tmp117@48 {
-             compatible = "ti,tmp117";
-             reg = <0x48>;
-             vcc-supply = <&pmic_reg_3v3>;
+            compatible = "ti,tmp117";
+            reg = <0x48>;
+            vcc-supply = <&pmic_reg_3v3>;
         };
     };
diff --git a/Bindings/input/gpio-matrix-keypad.txt b/Bindings/input/gpio-matrix-keypad.txt
deleted file mode 100644 (file)
index 570dc10..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-* GPIO driven matrix keypad device tree bindings
-
-GPIO driven matrix keypad is used to interface a SoC with a matrix keypad.
-The matrix keypad supports multiple row and column lines, a key can be
-placed at each intersection of a unique row and a unique column. The matrix
-keypad can sense a key-press and key-release by means of GPIO lines and
-report the event using GPIO interrupts to the cpu.
-
-Required Properties:
-- compatible:          Should be "gpio-matrix-keypad"
-- row-gpios:           List of gpios used as row lines. The gpio specifier
-                       for this property depends on the gpio controller to
-                       which these row lines are connected.
-- col-gpios:           List of gpios used as column lines. The gpio specifier
-                       for this property depends on the gpio controller to
-                       which these column lines are connected.
-- linux,keymap:                The definition can be found at
-                       bindings/input/matrix-keymap.txt
-
-Optional Properties:
-- linux,no-autorepeat: do no enable autorepeat feature.
-- wakeup-source:       use any event on keypad as wakeup event.
-                       (Legacy property supported: "linux,wakeup")
-- debounce-delay-ms:   debounce interval in milliseconds
-- col-scan-delay-us:   delay, measured in microseconds, that is needed
-                       before we can scan keypad after activating column gpio
-- drive-inactive-cols: drive inactive columns during scan,
-                       default is to turn inactive columns into inputs.
-
-Example:
-       matrix-keypad {
-               compatible = "gpio-matrix-keypad";
-               debounce-delay-ms = <5>;
-               col-scan-delay-us = <2>;
-
-               row-gpios = <&gpio2 25 0
-                            &gpio2 26 0
-                            &gpio2 27 0>;
-
-               col-gpios = <&gpio2 21 0
-                            &gpio2 22 0>;
-
-               linux,keymap = <0x0000008B
-                               0x0100009E
-                               0x02000069
-                               0x0001006A
-                               0x0101001C
-                               0x0201006C>;
-       };
diff --git a/Bindings/input/gpio-matrix-keypad.yaml b/Bindings/input/gpio-matrix-keypad.yaml
new file mode 100644 (file)
index 0000000..ebfff9e
--- /dev/null
@@ -0,0 +1,103 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+
+$id: http://devicetree.org/schemas/input/gpio-matrix-keypad.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: GPIO matrix keypad
+
+maintainers:
+  - Marek Vasut <marek.vasut@gmail.com>
+
+description:
+  GPIO driven matrix keypad is used to interface a SoC with a matrix keypad.
+  The matrix keypad supports multiple row and column lines, a key can be
+  placed at each intersection of a unique row and a unique column. The matrix
+  keypad can sense a key-press and key-release by means of GPIO lines and
+  report the event using GPIO interrupts to the cpu.
+
+allOf:
+  - $ref: /schemas/input/matrix-keymap.yaml#
+
+properties:
+  compatible:
+    const: gpio-matrix-keypad
+
+  row-gpios:
+    description:
+      List of GPIOs used as row lines. The gpio specifier for this property
+      depends on the gpio controller to which these row lines are connected.
+
+  col-gpios:
+    description:
+      List of GPIOs used as column lines. The gpio specifier for this property
+      depends on the gpio controller to which these column lines are connected.
+
+  linux,keymap: true
+
+  linux,no-autorepeat:
+    type: boolean
+    description: Do not enable autorepeat feature.
+
+  gpio-activelow:
+    type: boolean
+    description:
+      Force GPIO polarity to active low.
+      In the absence of this property GPIOs are treated as active high.
+
+  debounce-delay-ms:
+    description: Debounce interval in milliseconds.
+    default: 0
+
+  col-scan-delay-us:
+    description:
+      Delay, measured in microseconds, that is needed
+      before we can scan keypad after activating column gpio.
+    default: 0
+
+  all-cols-on-delay-us:
+    description:
+      Delay, measured in microseconds, that is needed
+      after activating all column gpios.
+    default: 0
+
+  drive-inactive-cols:
+    type: boolean
+    description:
+      Drive inactive columns during scan,
+      default is to turn inactive columns into inputs.
+
+  wakeup-source: true
+
+required:
+  - compatible
+  - row-gpios
+  - col-gpios
+  - linux,keymap
+
+additionalProperties: false
+
+examples:
+  - |
+    matrix-keypad {
+        compatible = "gpio-matrix-keypad";
+        debounce-delay-ms = <5>;
+        col-scan-delay-us = <2>;
+
+        row-gpios = <&gpio2 25 0
+                     &gpio2 26 0
+                     &gpio2 27 0>;
+
+        col-gpios = <&gpio2 21 0
+                     &gpio2 22 0>;
+
+        linux,keymap = <0x0000008B
+                        0x0100009E
+                        0x02000069
+                        0x0001006A
+                        0x0101001C
+                        0x0201006C>;
+
+        wakeup-source;
+    };
index 517a4ac..e365413 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Mediatek's Keypad Controller
 
 maintainers:
-  - Mattijs Korpershoek <mkorpershoek@baylibre.com>
+  - Mattijs Korpershoek <mkorpershoek@kernel.org>
 
 allOf:
   - $ref: /schemas/input/matrix-keymap.yaml#
index 88764ad..e03611e 100644 (file)
@@ -62,28 +62,28 @@ unevaluatedProperties: false
 
 examples:
   - |
-   #include <dt-bindings/input/input.h>
-   #include <dt-bindings/interrupt-controller/irq.h>
-   pmic {
-       #address-cells = <1>;
-       #size-cells = <0>;
+    #include <dt-bindings/input/input.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    pmic {
+        #address-cells = <1>;
+        #size-cells = <0>;
 
-       keypad@148 {
-           compatible = "qcom,pm8921-keypad";
-           reg = <0x148>;
-           interrupt-parent = <&pmicintc>;
-           interrupts = <74 IRQ_TYPE_EDGE_RISING>, <75 IRQ_TYPE_EDGE_RISING>;
-           linux,keymap = <
-               MATRIX_KEY(0, 0, KEY_VOLUMEUP)
-               MATRIX_KEY(0, 1, KEY_VOLUMEDOWN)
-               MATRIX_KEY(0, 2, KEY_CAMERA_FOCUS)
-               MATRIX_KEY(0, 3, KEY_CAMERA)
-           >;
-           keypad,num-rows = <1>;
-           keypad,num-columns = <5>;
-           debounce = <15>;
-           scan-delay = <32>;
-           row-hold = <91500>;
-       };
-   };
+        keypad@148 {
+            compatible = "qcom,pm8921-keypad";
+            reg = <0x148>;
+            interrupt-parent = <&pmicintc>;
+            interrupts = <74 IRQ_TYPE_EDGE_RISING>, <75 IRQ_TYPE_EDGE_RISING>;
+            linux,keymap = <
+                MATRIX_KEY(0, 0, KEY_VOLUMEUP)
+                MATRIX_KEY(0, 1, KEY_VOLUMEDOWN)
+                MATRIX_KEY(0, 2, KEY_CAMERA_FOCUS)
+                MATRIX_KEY(0, 3, KEY_CAMERA)
+            >;
+            keypad,num-rows = <1>;
+            keypad,num-columns = <5>;
+            debounce = <15>;
+            scan-delay = <32>;
+            row-hold = <91500>;
+        };
+    };
 ...
index 12c74c0..6459089 100644 (file)
@@ -52,24 +52,24 @@ unevaluatedProperties: false
 
 examples:
   - |
-   #include <dt-bindings/interrupt-controller/irq.h>
-   ssbi {
-     #address-cells = <1>;
-     #size-cells = <0>;
+    #include <dt-bindings/interrupt-controller/irq.h>
+    ssbi {
+        #address-cells = <1>;
+        #size-cells = <0>;
 
-     pmic@0 {
-       reg = <0x0>;
-       #address-cells = <1>;
-       #size-cells = <0>;
+        pmic@0 {
+            reg = <0x0>;
+            #address-cells = <1>;
+            #size-cells = <0>;
 
-       pwrkey@1c {
-         compatible = "qcom,pm8921-pwrkey";
-         reg = <0x1c>;
-         interrupt-parent = <&pmicint>;
-         interrupts = <50 IRQ_TYPE_EDGE_RISING>, <51 IRQ_TYPE_EDGE_RISING>;
-         debounce = <15625>;
-         pull-up;
-       };
-     };
-   };
+            pwrkey@1c {
+                compatible = "qcom,pm8921-pwrkey";
+                reg = <0x1c>;
+                interrupt-parent = <&pmicint>;
+                interrupts = <50 IRQ_TYPE_EDGE_RISING>, <51 IRQ_TYPE_EDGE_RISING>;
+                debounce = <15625>;
+                pull-up;
+            };
+        };
+    };
 ...
diff --git a/Bindings/input/touchscreen/apple,z2-multitouch.yaml b/Bindings/input/touchscreen/apple,z2-multitouch.yaml
new file mode 100644 (file)
index 0000000..402ca6b
--- /dev/null
@@ -0,0 +1,70 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/touchscreen/apple,z2-multitouch.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple touchscreens attached using the Z2 protocol
+
+maintainers:
+  - Sasha Finkelstein <fnkl.kernel@gmail.com>
+
+description: A series of touschscreen controllers used in Apple products
+
+allOf:
+  - $ref: touchscreen.yaml#
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+properties:
+  compatible:
+    enum:
+      - apple,j293-touchbar
+      - apple,j493-touchbar
+
+  interrupts:
+    maxItems: 1
+
+  reset-gpios:
+    maxItems: 1
+
+  firmware-name:
+    maxItems: 1
+
+  apple,z2-cal-blob:
+    $ref: /schemas/types.yaml#/definitions/uint8-array
+    maxItems: 4096
+    description:
+      Calibration blob supplied by the bootloader
+
+required:
+  - compatible
+  - interrupts
+  - reset-gpios
+  - firmware-name
+  - touchscreen-size-x
+  - touchscreen-size-y
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        touchscreen@0 {
+            compatible = "apple,j293-touchbar";
+            reg = <0>;
+            spi-max-frequency = <11500000>;
+            reset-gpios = <&pinctrl_ap 139 GPIO_ACTIVE_LOW>;
+            interrupts-extended = <&pinctrl_ap 194 IRQ_TYPE_EDGE_FALLING>;
+            firmware-name = "apple/dfrmtfw-j293.bin";
+            touchscreen-size-x = <23045>;
+            touchscreen-size-y = <640>;
+        };
+    };
+
+...
index d90f045..c40d92b 100644 (file)
@@ -19,6 +19,7 @@ allOf:
 properties:
   compatible:
     enum:
+      - goodix,gt9897
       - goodix,gt9916
 
   reg:
index 6049217..8f6335d 100644 (file)
@@ -164,20 +164,20 @@ examples:
         #size-cells = <0>;
 
         touchscreen@0 {
-           compatible = "ti,tsc2046";
-           reg = <0>;  /* CS0 */
-           interrupt-parent = <&gpio1>;
-           interrupts = <8 0>; /* BOOT6 / GPIO 8 */
-           pendown-gpio = <&gpio1 8 0>;
-           spi-max-frequency = <1000000>;
-           vcc-supply = <&reg_vcc3>;
-           wakeup-source;
-
-           ti,pressure-max = /bits/ 16 <255>;
-           ti,x-max = /bits/ 16 <8000>;
-           ti,x-min = /bits/ 16 <0>;
-           ti,x-plate-ohms = /bits/ 16 <40>;
-           ti,y-max = /bits/ 16 <4800>;
-           ti,y-min = /bits/ 16 <0>;
-       };
+            compatible = "ti,tsc2046";
+            reg = <0>; /* CS0 */
+            interrupt-parent = <&gpio1>;
+            interrupts = <8 0>;        /* BOOT6 / GPIO 8 */
+            pendown-gpio = <&gpio1 8 0>;
+            spi-max-frequency = <1000000>;
+            vcc-supply = <&reg_vcc3>;
+            wakeup-source;
+
+            ti,pressure-max = /bits/ 16 <255>;
+            ti,x-max = /bits/ 16 <8000>;
+            ti,x-min = /bits/ 16 <0>;
+            ti,x-plate-ohms = /bits/ 16 <40>;
+            ti,y-max = /bits/ 16 <4800>;
+            ti,y-min = /bits/ 16 <0>;
+        };
     };
index f49b43f..06e3621 100644 (file)
@@ -26,6 +26,7 @@ properties:
         deprecated: true
       - const: allwinner,sun7i-a20-sc-nmi
       - const: allwinner,sun9i-a80-nmi
+      - const: allwinner,sun55i-a523-nmi
       - items:
           - enum:
               - allwinner,sun8i-v3s-nmi
index a937447..3d60d9e 100644 (file)
@@ -35,6 +35,9 @@ properties:
               - amlogic,meson-sm1-gpio-intc
               - amlogic,meson-a1-gpio-intc
               - amlogic,meson-s4-gpio-intc
+              - amlogic,a4-gpio-intc
+              - amlogic,a4-gpio-ao-intc
+              - amlogic,a5-gpio-intc
               - amlogic,c3-gpio-intc
               - amlogic,t7-gpio-intc
           - const: amlogic,meson-gpio-intc
@@ -49,7 +52,7 @@ properties:
 
   amlogic,channel-interrupts:
     description: Array with the upstream hwirq numbers
-    minItems: 8
+    minItems: 2
     maxItems: 12
     $ref: /schemas/types.yaml#/definitions/uint32-array
 
@@ -60,6 +63,20 @@ required:
   - "#interrupt-cells"
   - amlogic,channel-interrupts
 
+if:
+  properties:
+    compatible:
+      contains:
+        const: amlogic,a4-gpio-ao-intc
+then:
+  properties:
+    amlogic,channel-interrupts:
+      maxItems: 2
+else:
+  properties:
+    amlogic,channel-interrupts:
+      minItems: 8
+
 additionalProperties: false
 
 examples:
diff --git a/Bindings/interrupt-controller/brcm,bcm2712-msix.yaml b/Bindings/interrupt-controller/brcm,bcm2712-msix.yaml
new file mode 100644 (file)
index 0000000..c846146
--- /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/brcm,bcm2712-msix.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom bcm2712 MSI-X Interrupt Peripheral support
+
+maintainers:
+  - Stanimir Varbanov <svarbanov@suse.de>
+
+description:
+  This interrupt controller is used to provide interrupt vectors to the
+  generic interrupt controller (GIC) on bcm2712. It will be used as
+  external MSI-X controller for PCIe root complex.
+
+allOf:
+  - $ref: /schemas/interrupt-controller/msi-controller.yaml#
+
+properties:
+  compatible:
+    const: brcm,bcm2712-mip
+
+  reg:
+    items:
+      - description: Base register address
+      - description: PCIe message address
+
+  "#msi-cells":
+    const: 0
+
+  brcm,msi-offset:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Shift the allocated MSI's.
+
+unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+  - msi-controller
+  - msi-ranges
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    axi {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        msi-controller@1000130000 {
+            compatible = "brcm,bcm2712-mip";
+            reg = <0x10 0x00130000 0x00 0xc0>,
+                  <0xff 0xfffff000 0x00 0x1000>;
+            msi-controller;
+            #msi-cells = <0>;
+            msi-ranges = <&gicv2 GIC_SPI 128 IRQ_TYPE_EDGE_RISING 64>;
+        };
+    };
index 6076ddf..c49688b 100644 (file)
@@ -19,6 +19,7 @@ properties:
               - fsl,imx8mp-irqsteer
               - fsl,imx8qm-irqsteer
               - fsl,imx8qxp-irqsteer
+              - fsl,imx94-irqsteer
           - const: fsl,imx-irqsteer
 
   reg:
diff --git a/Bindings/interrupt-controller/nxp,lpc3220-mic.txt b/Bindings/interrupt-controller/nxp,lpc3220-mic.txt
deleted file mode 100644 (file)
index 0bfb3ba..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-* NXP LPC32xx MIC, SIC1 and SIC2 Interrupt Controllers
-
-Required properties:
-- compatible: "nxp,lpc3220-mic" or "nxp,lpc3220-sic".
-- reg: should contain IC registers location and length.
-- interrupt-controller: identifies the node as an interrupt controller.
-- #interrupt-cells: the number of cells to define an interrupt, should be 2.
-  The first cell is the IRQ number, the second cell is used to specify
-  one of the supported IRQ types:
-      IRQ_TYPE_EDGE_RISING = low-to-high edge triggered,
-      IRQ_TYPE_EDGE_FALLING = high-to-low edge triggered,
-      IRQ_TYPE_LEVEL_HIGH = active high level-sensitive,
-      IRQ_TYPE_LEVEL_LOW = active low level-sensitive.
-  Reset value is IRQ_TYPE_LEVEL_LOW.
-
-Optional properties:
-- interrupts: empty for MIC interrupt controller, cascaded MIC
-  hardware interrupts for SIC1 and SIC2
-
-Examples:
-
-       /* LPC32xx MIC, SIC1 and SIC2 interrupt controllers */
-       mic: interrupt-controller@40008000 {
-               compatible = "nxp,lpc3220-mic";
-               reg = <0x40008000 0x4000>;
-               interrupt-controller;
-               #interrupt-cells = <2>;
-       };
-
-       sic1: interrupt-controller@4000c000 {
-               compatible = "nxp,lpc3220-sic";
-               reg = <0x4000c000 0x4000>;
-               interrupt-controller;
-               #interrupt-cells = <2>;
-
-               interrupt-parent = <&mic>;
-               interrupts = <0 IRQ_TYPE_LEVEL_LOW>,
-                            <30 IRQ_TYPE_LEVEL_LOW>;
-       };
-
-       sic2: interrupt-controller@40010000 {
-               compatible = "nxp,lpc3220-sic";
-               reg = <0x40010000 0x4000>;
-               interrupt-controller;
-               #interrupt-cells = <2>;
-
-               interrupt-parent = <&mic>;
-               interrupts = <1 IRQ_TYPE_LEVEL_LOW>,
-                            <31 IRQ_TYPE_LEVEL_LOW>;
-       };
-
-       /* ADC */
-       adc@40048000 {
-               compatible = "nxp,lpc3220-adc";
-               reg = <0x40048000 0x1000>;
-               interrupt-parent = <&sic1>;
-               interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
-       };
diff --git a/Bindings/interrupt-controller/nxp,lpc3220-mic.yaml b/Bindings/interrupt-controller/nxp,lpc3220-mic.yaml
new file mode 100644 (file)
index 0000000..724c869
--- /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/interrupt-controller/nxp,lpc3220-mic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC32xx MIC, SIC1 and SIC2 Interrupt Controllers
+
+maintainers:
+  - Vladimir Zapolskiy <vz@mleia.com>
+
+properties:
+  compatible:
+    enum:
+      - nxp,lpc3220-mic
+      - nxp,lpc3220-sic
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+  interrupts:
+    items:
+      - description: Regular interrupt request
+      - description: Fast interrupt request
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: nxp,lpc3220-sic
+    then:
+      required:
+        - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    mic: interrupt-controller@40008000 {
+        compatible = "nxp,lpc3220-mic";
+        reg = <0x40008000 0x4000>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+    };
+
+    interrupt-controller@4000c000 {
+        compatible = "nxp,lpc3220-sic";
+        reg = <0x4000c000 0x4000>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+        interrupt-parent = <&mic>;
+        interrupts = <0 IRQ_TYPE_LEVEL_LOW>,
+                    <30 IRQ_TYPE_LEVEL_LOW>;
+    };
index d7ef4f1..3f99c86 100644 (file)
@@ -4,7 +4,7 @@
 $id: http://devicetree.org/schemas/interrupt-controller/renesas,rzv2h-icu.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Renesas RZ/V2H(P) Interrupt Control Unit
+title: Renesas RZ/{G3E,V2H(P)} Interrupt Control Unit
 
 maintainers:
   - Fabrizio Castro <fabrizio.castro.jz@renesas.com>
@@ -20,7 +20,9 @@ description:
 
 properties:
   compatible:
-    const: renesas,r9a09g057-icu # RZ/V2H(P)
+    enum:
+      - renesas,r9a09g047-icu # RZ/G3E
+      - renesas,r9a09g057-icu # RZ/V2H(P)
 
   '#interrupt-cells':
     description: The first cell is the SPI number of the NMI or the
index 190a649..bef0052 100644 (file)
@@ -91,6 +91,14 @@ properties:
       Firmware must configure interrupt delegation registers based on
       interrupt delegation list.
 
+  riscv,hart-indexes:
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 1
+    maxItems: 16384
+    description:
+      A list of hart indexes that APLIC should use to address each hart
+      that is mentioned in the "interrupts-extended"
+
 dependencies:
   riscv,delegation: [ "riscv,children" ]
 
diff --git a/Bindings/interrupt-controller/sophgo,sg2042-msi.yaml b/Bindings/interrupt-controller/sophgo,sg2042-msi.yaml
new file mode 100644 (file)
index 0000000..e1ffd55
--- /dev/null
@@ -0,0 +1,61 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/sophgo,sg2042-msi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sophgo SG2042 MSI Controller
+
+maintainers:
+  - Chen Wang <unicorn_wang@outlook.com>
+
+description:
+  This interrupt controller is in Sophgo SG2042 for transforming interrupts from
+  PCIe MSI to PLIC interrupts.
+
+allOf:
+  - $ref: /schemas/interrupt-controller/msi-controller.yaml#
+
+properties:
+  compatible:
+    const: sophgo,sg2042-msi
+
+  reg:
+    items:
+      - description: clear register
+      - description: msi doorbell address
+
+  reg-names:
+    items:
+      - const: clr
+      - const: doorbell
+
+  msi-controller: true
+
+  msi-ranges:
+    maxItems: 1
+
+  "#msi-cells":
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - msi-controller
+  - msi-ranges
+  - "#msi-cells"
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    msi-controller@30000000 {
+      compatible = "sophgo,sg2042-msi";
+      reg = <0x30000000 0x4>, <0x30000008 0x4>;
+      reg-names = "clr", "doorbell";
+      msi-controller;
+      #msi-cells = <0>;
+      msi-ranges = <&plic 64 IRQ_TYPE_LEVEL_HIGH 32>;
+    };
index 032fdc2..7b9d550 100644 (file)
@@ -90,6 +90,7 @@ properties:
           - enum:
               - qcom,qcm2290-smmu-500
               - qcom,qcs615-smmu-500
+              - qcom,qcs8300-smmu-500
               - qcom,sa8255p-smmu-500
               - qcom,sa8775p-smmu-500
               - qcom,sar2130p-smmu-500
@@ -397,6 +398,7 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,qcs8300-smmu-500
               - qcom,sa8775p-smmu-500
               - qcom,sc7280-smmu-500
               - qcom,sc8280xp-smmu-500
@@ -581,7 +583,6 @@ allOf:
               - cavium,smmu-v2
               - marvell,ap806-smmu-500
               - nvidia,smmu-500
-              - qcom,qcs8300-smmu-500
               - qcom,qdu1000-smmu-500
               - qcom,sa8255p-smmu-500
               - qcom,sc7180-smmu-500
index 5ae9a62..3e5623e 100644 (file)
@@ -22,6 +22,7 @@ properties:
           - enum:
               - qcom,msm8916-iommu
               - qcom,msm8917-iommu
+              - qcom,msm8937-iommu
               - qcom,msm8953-iommu
           - const: qcom,msm-iommu-v1
       - items:
diff --git a/Bindings/leds/backlight/apple,dwi-bl.yaml b/Bindings/leds/backlight/apple,dwi-bl.yaml
new file mode 100644 (file)
index 0000000..29caeb3
--- /dev/null
@@ -0,0 +1,57 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/leds/backlight/apple,dwi-bl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple DWI 2-Wire Interface Backlight Controller
+
+maintainers:
+  - Nick Chan <towinchenmi@gmail.com>
+
+description:
+  Apple SoCs contain a 2-wire interface called DWI. On some Apple iPhones,
+  iPads and iPod touches with a LCD display, 1-2 backlight controllers
+  are connected via DWI. Interfacing with DWI controls all backlight
+  controllers at the same time. As such, the backlight controllers are
+  treated as a single controller regardless of the underlying
+  configuration.
+
+allOf:
+  - $ref: common.yaml#
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - apple,s5l8960x-dwi-bl
+          - apple,t7000-dwi-bl
+          - apple,s8000-dwi-bl
+          - apple,t8010-dwi-bl
+          - apple,t8015-dwi-bl
+      - const: apple,dwi-bl
+
+  reg:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    soc {
+      #address-cells = <2>;
+      #size-cells = <2>;
+
+      dwi_bl: backlight@20e200010 {
+        compatible = "apple,s5l8960x-dwi-bl", "apple,dwi-bl";
+        reg = <0x2 0x0e200010 0x0 0x8>;
+        power-domains = <&ps_dwi>;
+      };
+    };
index 8b82c45..841a022 100644 (file)
@@ -39,6 +39,10 @@ properties:
           - enum:
               - qcom,pm8550-pwm
           - const: qcom,pm8350c-pwm
+      - items:
+          - enum:
+              - qcom,pm8937-pwm
+          - const: qcom,pm8916-pwm
 
   "#pwm-cells":
     const: 2
diff --git a/Bindings/leds/leds-tlc591xx.txt b/Bindings/leds/leds-tlc591xx.txt
deleted file mode 100644 (file)
index 3bbbf70..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-LEDs connected to tlc59116 or tlc59108
-
-Required properties
-- compatible: should be "ti,tlc59116" or "ti,tlc59108"
-- #address-cells: must be 1
-- #size-cells: must be 0
-- reg: typically 0x68
-
-Each led is represented as a sub-node of the ti,tlc59116.
-See Documentation/devicetree/bindings/leds/common.txt
-
-LED sub-node properties:
-- reg: number of LED line, 0 to 15 or 0 to 7
-- label: (optional) name of LED
-- linux,default-trigger : (optional)
-
-Examples:
-
-tlc59116@68 {
-       #address-cells = <1>;
-       #size-cells = <0>;
-       compatible = "ti,tlc59116";
-       reg = <0x68>;
-
-       wan@0 {
-               label = "wrt1900ac:amber:wan";
-               reg = <0x0>;
-       };
-
-       2g@2 {
-               label = "wrt1900ac:white:2g";
-               reg = <0x2>;
-       };
-
-       alive@9 {
-               label = "wrt1900ac:green:alive";
-               reg = <0x9>;
-               linux,default_trigger = "heartbeat";
-       };
-};
diff --git a/Bindings/leds/ti,tlc59116.yaml b/Bindings/leds/ti,tlc59116.yaml
new file mode 100644 (file)
index 0000000..ce97137
--- /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/leds/ti,tlc59116.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: LEDs connected to tlc59116 or tlc59108
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+
+properties:
+  compatible:
+    enum:
+      - ti,tlc59108
+      - ti,tlc59116
+
+  reg:
+    maxItems: 1
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
+
+patternProperties:
+  "^led@[0-9a-f]$":
+    type: object
+    $ref: common.yaml#
+    properties:
+      reg:
+        items:
+          minimum: 0
+          maximum: 15
+
+    unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+  - "#address-cells"
+  - "#size-cells"
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: ti,tlc59108
+    then:
+      patternProperties:
+        "^led@[0-9a-f]$":
+          properties:
+            reg:
+              items:
+                maximum: 7
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        led-controller@68 {
+            compatible = "ti,tlc59116";
+            reg = <0x68>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            led@0 {
+                reg = <0x0>;
+                label = "wrt1900ac:amber:wan";
+            };
+
+            led@2 {
+                reg = <0x2>;
+                label = "wrt1900ac:white:2g";
+            };
+
+            led@9 {
+                reg = <0x9>;
+                label = "wrt1900ac:green:alive";
+                linux,default-trigger = "heartbeat";
+            };
+        };
+    };
+
index 00631af..581425a 100644 (file)
@@ -54,6 +54,10 @@ properties:
               - fsl,imx8qm-mu
               - fsl,imx8qxp-mu
           - const: fsl,imx6sx-mu
+      - items:
+          - enum:
+              - fsl,imx94-mu
+          - const: fsl,imx95-mu
 
   reg:
     maxItems: 1
@@ -142,7 +146,8 @@ allOf:
       not:
         properties:
           compatible:
-            const: fsl,imx95-mu
+            contains:
+              const: fsl,imx95-mu
     then:
       patternProperties:
         "^sram@[a-f0-9]+": false
index cef9d76..73d6db3 100644 (file)
@@ -25,6 +25,7 @@ properties:
           - mediatek,mt8188-gce
           - mediatek,mt8192-gce
           - mediatek,mt8195-gce
+          - mediatek,mt8196-gce
       - items:
           - const: mediatek,mt6795-gce
           - const: mediatek,mt8173-gce
@@ -49,6 +50,9 @@ properties:
     items:
       - const: gce
 
+  iommus:
+    maxItems: 1
+
 required:
   - compatible
   - "#mbox-cells"
index 78f68da..a58a018 100644 (file)
@@ -26,6 +26,7 @@ properties:
           - const: qcom,ipq6018-apcs-apps-global
       - items:
           - enum:
+              - qcom,msm8226-apcs-kpss-global
               - qcom,qcs404-apcs-apps-global
           - const: qcom,msm8916-apcs-kpss-global
           - const: syscon
diff --git a/Bindings/media/aspeed,video-engine.yaml b/Bindings/media/aspeed,video-engine.yaml
new file mode 100644 (file)
index 0000000..682bba2
--- /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/media/aspeed,video-engine.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ASPEED Video Engine
+
+maintainers:
+  - Eddie James <eajames@linux.ibm.com>
+
+description:
+  The Video Engine (VE) embedded in the ASPEED SOCs can be configured to
+  capture and compress video data from digital or analog sources.
+
+properties:
+  compatible:
+    enum:
+      - aspeed,ast2400-video-engine
+      - aspeed,ast2500-video-engine
+      - aspeed,ast2600-video-engine
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: vclk
+      - const: eclk
+
+  resets:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  memory-region:
+    maxItems: 1
+    description: |
+      Phandle to the reserved memory nodes to be associated with the
+      VE. VE will acquires memory space for 3 purposes:
+        1. JPEG header
+        2. Compressed result
+        3. Temporary transformed image data
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/ast2600-clock.h>
+
+    video@1e700000 {
+        compatible = "aspeed,ast2600-video-engine";
+        reg = <0x1e700000 0x1000>;
+        clocks = <&syscon ASPEED_CLK_GATE_VCLK>,
+                 <&syscon ASPEED_CLK_GATE_ECLK>;
+        clock-names = "vclk", "eclk";
+        interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+    };
diff --git a/Bindings/media/aspeed-video.txt b/Bindings/media/aspeed-video.txt
deleted file mode 100644 (file)
index d2ca325..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-* Device tree bindings for Aspeed Video Engine
-
-The Video Engine (VE) embedded in the Aspeed AST2400/2500/2600 SOCs can
-capture and compress video data from digital or analog sources.
-
-Required properties:
- - compatible:         "aspeed,ast2400-video-engine" or
-                       "aspeed,ast2500-video-engine" or
-                       "aspeed,ast2600-video-engine"
- - reg:                        contains the offset and length of the VE memory region
- - clocks:             clock specifiers for the syscon clocks associated with
-                       the VE (ordering must match the clock-names property)
- - clock-names:                "vclk" and "eclk"
- - resets:             reset specifier for the syscon reset associated with
-                       the VE
- - interrupts:         the interrupt associated with the VE on this platform
-
-Optional properties:
- - memory-region:
-       phandle to a memory region to allocate from, as defined in
-       Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
-
-Example:
-
-video-engine@1e700000 {
-    compatible = "aspeed,ast2500-video-engine";
-    reg = <0x1e700000 0x20000>;
-    clocks = <&syscon ASPEED_CLK_GATE_VCLK>, <&syscon ASPEED_CLK_GATE_ECLK>;
-    clock-names = "vclk", "eclk";
-    resets = <&syscon ASPEED_RESET_VIDEO>;
-    interrupts = <7>;
-    memory-region = <&video_engine_memory>;
-};
index 4371a0e..9ee1483 100644 (file)
@@ -49,6 +49,10 @@ properties:
       Indicates that the output is a BT.656-4 compatible stream.
     type: boolean
 
+  interrupts:
+    items:
+      - description: The GPIO connected to the INTRQ pin.
+
   port:
     $ref: /schemas/graph.yaml#/$defs/port-base
     unevaluatedProperties: false
index b681412..4d40e75 100644 (file)
@@ -71,7 +71,7 @@ properties:
                 description:
                   Any lane can be inverted or not.
                 minItems: 1
-                maxItems: 2
+                maxItems: 3
 
             required:
               - data-lanes
index 110e8f5..ebc6155 100644 (file)
@@ -41,10 +41,6 @@ properties:
     minItems: 1
     maxItems: 5
 
-  assigned-clocks: true
-
-  assigned-clock-parents: true
-
   iommus:
     minItems: 1
     maxItems: 32
@@ -78,8 +74,6 @@ required:
   - clocks
   - clock-names
   - iommus
-  - assigned-clocks
-  - assigned-clock-parents
 
 allOf:
   - if:
index 5865e6f..bf8082d 100644 (file)
@@ -4,52 +4,70 @@
 $id: http://devicetree.org/schemas/media/mediatek,vcodec-subdev-decoder.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Mediatek Video Decode Accelerator With Multi Hardware
+title: MediaTek Video Decode Accelerator With Multi Hardware
 
 maintainers:
   - Yunfei Dong <yunfei.dong@mediatek.com>
 
 description: |
-  Mediatek Video Decode is the video decode hardware present in Mediatek
-  SoCs which supports high resolution decoding functionalities. Required
-  parent and child device node.
-
-  About the Decoder Hardware Block Diagram, please check below:
-
-    +------------------------------------------------+-------------------------------------+
-    |                                                |                                     |
-    |  input -> lat soc HW -> lat HW -> lat buffer --|--> lat buffer -> core HW -> output  |
-    |            ||             ||                   |                     ||              |
-    +------------||-------------||-------------------+---------------------||--------------+
-                 ||     lat     ||                   |               core workqueue  <parent>
-    -------------||-------------||-------------------|---------------------||---------------
-                 ||<------------||----------------HW index---------------->||        <child>
-                 \/             \/                                         \/
-               +-------------------------------------------------------------+
-               |                          enable/disable                     |
-               |                 clk     power    irq    iommu               |
-               |                   (lat/lat soc/core0/core1)                 |
-               +-------------------------------------------------------------+
-
-  As above, there are parent and child devices, child mean each hardware. The child device
-  controls the information of each hardware independent which include clk/power/irq.
-
-  There are two workqueues in parent device: lat workqueue and core workqueue. They are used
-  to lat and core hardware decoder. Lat workqueue need to get input bitstream and lat buffer,
-  then enable lat to decode, writing the result to lat buffer, dislabe hardware when lat decode
-  done. Core workqueue need to get lat buffer and output buffer, then enable core to decode,
-  writing the result to output buffer, disable hardware when core decode done. These two
-  hardwares will decode each frame cyclically.
-
-  For the smi common may not the same for each hardware, can't combine all hardware in one node,
-  or leading to iommu fault when access dram data.
-
-  Lat soc is a hardware which is related with some larb(local arbiter) ports. For mt8195
-  platform, there are some ports like RDMA, UFO in lat soc larb, need to enable its power and
-  clock when lat start to work, don't have interrupt.
-
-  mt8195: lat soc HW + lat HW + core HW
-  mt8192: lat HW + core HW
+  MediaTek Video Decode Accelerator is the video decoding hardware present in
+  MediaTek SoCs that supports high-resolution decoding functionalities.
+  It consists of parent and child nodes.
+
+  The decoder hardware block diagram is shown below:
+
+    +------------------------------------------------+------------------------------+
+    |                                                |                              |
+    |  input -> LAT-SoC HW -> LAT HW -> LAT buffer --|--> Core HW -> output buffer  |
+    |              ||           ||                   |       ||                     |
+    +--------------||-----------||-------------------+-------||---------------------+
+                    LAT Workqueue                    |  Core Workqueue       <parent>
+    ---------------||-----------||-------------------|-------||----------------------
+                   ||<----------||---------HW index--------->||              <child>
+                   \/           \/                           \/
+           +-------------------------------------------------------------+
+           |                          enable/disable                     |
+           |                 clk     power    irq    iommu               |
+           |                   (lat/lat-soc/core0/core1)                 |
+           +-------------------------------------------------------------+
+
+  The child nodes represent the individual hardware blocks within the decoding
+  pipeline, such as LAT-SoC, LAT and Core.
+  Each child node is responsible for managing the dedicated resources of the
+  hardware, such as clocks, power domains, interrupts and IOMMUs.
+
+  The parent node is a central point of control for the child nodes.
+  It identifies the specific video decoding pipeline architecture used by the
+  SoC, manages the shared resources like workqueues and platform data, and
+  handles V4L2 API calls on behalf of the underlying hardware.
+
+  The parent utilizes two workqueues to manage the decoding process.
+  1. LAT Workqueue, for LAT-SoC and LAT decoder:
+     Its workers take input bitstream and LAT buffer, enable the hardware for
+     decoding tasks, write the result to LAT buffer, and disable the hardware
+     after the LAT decoding is done.
+  2. Core Workqueue, for Core decoder:
+     Its workers take LAT buffer and output buffer, enable the hardware for
+     decoding tasks, write the result to output buffer, and disable the hardware
+     after the Core decoding is done.
+
+  These hardware decode each frame cyclically.
+
+  The hardware might be associated with different SMI-common devices.
+  To prevent IOMMU faults during DRAM access in such cases, each hardware with
+  the unique SMI-common device must be placed under a separate parent node in
+  the device tree.
+
+  LAT-SoC refers to another hardware block that connected to additional LARB
+  (local arbiter) ports, such as RDMA and UFO.
+  It requires independent power and clock control to work with LAT decoder, and
+  it doesn't have a dedicated interrupt.
+
+  The used video decoding pipeline architecture across various Mediatek SoC:
+    MT8195: LAT-SoC + LAT + Core
+    MT8192: LAT + Core
+    MT8188: LAT + Core
+    MT8186: Core
 
 properties:
   compatible:
index cfabf36..a4aacd3 100644 (file)
@@ -44,7 +44,8 @@ properties:
     maxItems: 1
 
   iommus:
-    maxItems: 2
+    minItems: 2
+    maxItems: 32
     description: |
       Points to the respective IOMMU block with master port as argument, see
       Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details.
index 83c020a..5b15f89 100644 (file)
@@ -39,7 +39,7 @@ properties:
 
   iommus:
     minItems: 2
-    maxItems: 4
+    maxItems: 32
     description: |
       Points to the respective IOMMU block with master port as argument, see
       Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details.
index e11141b..ee35e3b 100644 (file)
@@ -55,8 +55,8 @@ properties:
       - const: csiphy3_timer
       - const: csiphy4
       - const: csiphy4_timer
-      - const: gcc_camera_ahb
-      - const: gcc_cam_hf_axi
+      - const: gcc_axi_hf
+      - const: gcc_axi_sf
       - const: icp_ahb
       - const: vfe0
       - const: vfe0_axi
@@ -310,8 +310,8 @@ examples:
                      <&camcc CAM_CC_CSI3PHYTIMER_CLK>,
                      <&camcc CAM_CC_CSIPHY4_CLK>,
                      <&camcc CAM_CC_CSI4PHYTIMER_CLK>,
-                     <&gcc GCC_CAMERA_AHB_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>,
@@ -343,8 +343,8 @@ examples:
                           "csiphy3_timer",
                           "csiphy4",
                           "csiphy4_timer",
-                          "gcc_camera_ahb",
-                          "gcc_cam_hf_axi",
+                          "gcc_axi_hf",
+                          "gcc_axi_sf",
                           "icp_ahb",
                           "vfe0",
                           "vfe0_axi",
diff --git a/Bindings/media/qcom,sdm670-camss.yaml b/Bindings/media/qcom,sdm670-camss.yaml
new file mode 100644 (file)
index 0000000..35c40fe
--- /dev/null
@@ -0,0 +1,318 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/qcom,sdm670-camss.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm SDM670 Camera Subsystem (CAMSS)
+
+maintainers:
+  - Richard Acayan <mailingradian@gmail.com>
+
+description:
+  The CAMSS IP is a CSI decoder and ISP present on Qualcomm platforms.
+
+properties:
+  compatible:
+    const: qcom,sdm670-camss
+
+  reg:
+    maxItems: 9
+
+  reg-names:
+    items:
+      - const: csid0
+      - const: csid1
+      - const: csid2
+      - const: csiphy0
+      - const: csiphy1
+      - const: csiphy2
+      - const: vfe0
+      - const: vfe1
+      - const: vfe_lite
+
+  interrupts:
+    maxItems: 9
+
+  interrupt-names:
+    items:
+      - const: csid0
+      - const: csid1
+      - const: csid2
+      - const: csiphy0
+      - const: csiphy1
+      - const: csiphy2
+      - const: vfe0
+      - const: vfe1
+      - const: vfe_lite
+
+  clocks:
+    maxItems: 22
+
+  clock-names:
+    items:
+      - const: camnoc_axi
+      - const: cpas_ahb
+      - const: csi0
+      - const: csi1
+      - const: csi2
+      - const: csiphy0
+      - const: csiphy0_timer
+      - const: csiphy1
+      - const: csiphy1_timer
+      - const: csiphy2
+      - const: csiphy2_timer
+      - const: gcc_camera_ahb
+      - const: gcc_camera_axi
+      - const: soc_ahb
+      - const: vfe0
+      - const: vfe0_axi
+      - const: vfe0_cphy_rx
+      - const: vfe1
+      - const: vfe1_axi
+      - const: vfe1_cphy_rx
+      - const: vfe_lite
+      - const: vfe_lite_cphy_rx
+
+  iommus:
+    maxItems: 4
+
+  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
+
+  vdda-phy-supply:
+    description:
+      Phandle to a regulator supply to PHY core block.
+
+  vdda-pll-supply:
+    description:
+      Phandle to 1.8V regulator supply to PHY refclk pll block.
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    description:
+      CSI input ports.
+
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description:
+          Input port for receiving CSI data from CSIPHY0.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              clock-lanes:
+                maxItems: 1
+
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+            required:
+              - clock-lanes
+              - data-lanes
+
+      port@1:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description:
+          Input port for receiving CSI data from CSIPHY1.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              clock-lanes:
+                maxItems: 1
+
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+            required:
+              - clock-lanes
+              - data-lanes
+
+      port@2:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description:
+          Input port for receiving CSI data from CSIPHY2.
+
+        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
+  - interrupts
+  - interrupt-names
+  - clocks
+  - clock-names
+  - iommus
+  - power-domains
+  - power-domain-names
+  - vdda-phy-supply
+  - vdda-pll-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,camcc-sdm845.h>
+    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        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";
+
+            vdda-phy-supply = <&vreg_l1a_1p225>;
+            vdda-pll-supply = <&vreg_l8a_1p8>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+
+                    csiphy_ep0: endpoint {
+                        clock-lanes = <7>;
+                        data-lanes = <0 1 2 3>;
+                        remote-endpoint = <&front_sensor_ep>;
+                    };
+                };
+            };
+        };
+    };
diff --git a/Bindings/media/qcom,sm8550-camss.yaml b/Bindings/media/qcom,sm8550-camss.yaml
new file mode 100644 (file)
index 0000000..cd34f14
--- /dev/null
@@ -0,0 +1,597 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/qcom,sm8550-camss.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm SM8550 Camera Subsystem (CAMSS)
+
+maintainers:
+  - Depeng Shao <quic_depengs@quicinc.com>
+
+description:
+  The CAMSS IP is a CSI decoder and ISP present on Qualcomm platforms.
+
+properties:
+  compatible:
+    const: qcom,sm8550-camss
+
+  reg:
+    maxItems: 19
+
+  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: csiphy3
+      - const: csiphy4
+      - const: csiphy5
+      - const: csiphy6
+      - const: csiphy7
+      - const: vfe0
+      - const: vfe1
+      - const: vfe2
+      - const: vfe_lite0
+      - const: vfe_lite1
+
+  clocks:
+    maxItems: 36
+
+  clock-names:
+    items:
+      - const: camnoc_axi
+      - const: cpas_ahb
+      - const: cpas_fast_ahb_clk
+      - const: cpas_ife_lite
+      - const: cpas_vfe0
+      - const: cpas_vfe1
+      - const: cpas_vfe2
+      - const: csid
+      - const: csiphy0
+      - const: csiphy0_timer
+      - const: csiphy1
+      - const: csiphy1_timer
+      - const: csiphy2
+      - const: csiphy2_timer
+      - const: csiphy3
+      - const: csiphy3_timer
+      - const: csiphy4
+      - const: csiphy4_timer
+      - const: csiphy5
+      - const: csiphy5_timer
+      - const: csiphy6
+      - const: csiphy6_timer
+      - const: csiphy7
+      - const: csiphy7_timer
+      - const: csiphy_rx
+      - const: gcc_axi_hf
+      - const: vfe0
+      - const: vfe0_fast_ahb
+      - const: vfe1
+      - const: vfe1_fast_ahb
+      - const: vfe2
+      - const: vfe2_fast_ahb
+      - const: vfe_lite
+      - const: vfe_lite_ahb
+      - const: vfe_lite_cphy_rx
+      - const: vfe_lite_csid
+
+  interrupts:
+    maxItems: 18
+
+  interrupt-names:
+    items:
+      - const: csid0
+      - const: csid1
+      - const: csid2
+      - const: csid_lite0
+      - const: csid_lite1
+      - const: csiphy0
+      - const: csiphy1
+      - const: csiphy2
+      - const: csiphy3
+      - const: csiphy4
+      - const: csiphy5
+      - const: csiphy6
+      - const: csiphy7
+      - const: vfe0
+      - const: vfe1
+      - const: vfe2
+      - const: vfe_lite0
+      - const: vfe_lite1
+
+  interconnects:
+    maxItems: 2
+
+  interconnect-names:
+    items:
+      - const: ahb
+      - const: hf_0_mnoc
+
+  iommus:
+    maxItems: 1
+
+  power-domains:
+    items:
+      - description: IFE0 GDSC - Image Front End, Global Distributed Switch Controller.
+      - description: IFE1 GDSC - Image Front End, Global Distributed Switch Controller.
+      - description: IFE2 GDSC - Image Front End, Global Distributed Switch Controller.
+      - description: Titan GDSC - Titan ISP Block, Global Distributed Switch Controller.
+
+  power-domain-names:
+    items:
+      - const: ife0
+      - const: ife1
+      - const: ife2
+      - const: top
+
+  vdda-phy-supply:
+    description:
+      Phandle to a regulator supply to PHY core block.
+
+  vdda-pll-supply:
+    description:
+      Phandle to 1.2V regulator supply to PHY refclk pll block.
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    description:
+      CSI input ports.
+
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description:
+          Input port for receiving CSI data on CSI0.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              clock-lanes:
+                maxItems: 1
+
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
+            required:
+              - clock-lanes
+              - data-lanes
+
+      port@1:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description:
+          Input port for receiving CSI data on CSI1.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              clock-lanes:
+                maxItems: 1
+
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
+            required:
+              - clock-lanes
+              - data-lanes
+
+      port@2:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description:
+          Input port for receiving CSI data on CSI2.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              clock-lanes:
+                maxItems: 1
+
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
+            required:
+              - clock-lanes
+              - data-lanes
+
+      port@3:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description:
+          Input port for receiving CSI data on CSI3.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              clock-lanes:
+                maxItems: 1
+
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
+            required:
+              - clock-lanes
+              - data-lanes
+
+      port@4:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description:
+          Input port for receiving CSI data on CSI4.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              clock-lanes:
+                maxItems: 1
+
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
+            required:
+              - clock-lanes
+              - data-lanes
+
+      port@5:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description:
+          Input port for receiving CSI data on CSI5.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              clock-lanes:
+                maxItems: 1
+
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
+            required:
+              - clock-lanes
+              - data-lanes
+
+      port@6:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description:
+          Input port for receiving CSI data on CSI6.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              clock-lanes:
+                maxItems: 1
+
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
+            required:
+              - clock-lanes
+              - data-lanes
+
+      port@7:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description:
+          Input port for receiving CSI data on CSI7.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              clock-lanes:
+                maxItems: 1
+
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
+            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
+  - vdda-phy-supply
+  - vdda-pll-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,rpmh.h>
+    #include <dt-bindings/clock/qcom,sm8550-camcc.h>
+    #include <dt-bindings/clock/qcom,sm8550-gcc.h>
+    #include <dt-bindings/interconnect/qcom,icc.h>
+    #include <dt-bindings/interconnect/qcom,sm8550-rpmh.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/power/qcom-rpmpd.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        isp@acb7000 {
+            compatible = "qcom,sm8550-camss";
+
+            reg = <0 0x0acb7000 0 0xd00>,
+                  <0 0x0acb9000 0 0xd00>,
+                  <0 0x0acbb000 0 0xd00>,
+                  <0 0x0acca000 0 0xa00>,
+                  <0 0x0acce000 0 0xa00>,
+                  <0 0x0acb6000 0 0x1000>,
+                  <0 0x0ace4000 0 0x2000>,
+                  <0 0x0ace6000 0 0x2000>,
+                  <0 0x0ace8000 0 0x2000>,
+                  <0 0x0acea000 0 0x2000>,
+                  <0 0x0acec000 0 0x2000>,
+                  <0 0x0acee000 0 0x2000>,
+                  <0 0x0acf0000 0 0x2000>,
+                  <0 0x0acf2000 0 0x2000>,
+                  <0 0x0ac62000 0 0xf000>,
+                  <0 0x0ac71000 0 0xf000>,
+                  <0 0x0ac80000 0 0xf000>,
+                  <0 0x0accb000 0 0x1800>,
+                  <0 0x0accf000 0 0x1800>;
+            reg-names = "csid0",
+                        "csid1",
+                        "csid2",
+                        "csid_lite0",
+                        "csid_lite1",
+                        "csid_wrapper",
+                        "csiphy0",
+                        "csiphy1",
+                        "csiphy2",
+                        "csiphy3",
+                        "csiphy4",
+                        "csiphy5",
+                        "csiphy6",
+                        "csiphy7",
+                        "vfe0",
+                        "vfe1",
+                        "vfe2",
+                        "vfe_lite0",
+                        "vfe_lite1";
+
+            clocks = <&camcc CAM_CC_CAMNOC_AXI_CLK>,
+                     <&camcc CAM_CC_CPAS_AHB_CLK>,
+                     <&camcc CAM_CC_CPAS_FAST_AHB_CLK>,
+                     <&camcc CAM_CC_CPAS_IFE_LITE_CLK>,
+                     <&camcc CAM_CC_CPAS_IFE_0_CLK>,
+                     <&camcc CAM_CC_CPAS_IFE_1_CLK>,
+                     <&camcc CAM_CC_CPAS_IFE_2_CLK>,
+                     <&camcc CAM_CC_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>,
+                     <&camcc CAM_CC_CSIPHY3_CLK>,
+                     <&camcc CAM_CC_CSI3PHYTIMER_CLK>,
+                     <&camcc CAM_CC_CSIPHY4_CLK>,
+                     <&camcc CAM_CC_CSI4PHYTIMER_CLK>,
+                     <&camcc CAM_CC_CSIPHY5_CLK>,
+                     <&camcc CAM_CC_CSI5PHYTIMER_CLK>,
+                     <&camcc CAM_CC_CSIPHY6_CLK>,
+                     <&camcc CAM_CC_CSI6PHYTIMER_CLK>,
+                     <&camcc CAM_CC_CSIPHY7_CLK>,
+                     <&camcc CAM_CC_CSI7PHYTIMER_CLK>,
+                     <&camcc CAM_CC_CSID_CSIPHY_RX_CLK>,
+                     <&gcc GCC_CAMERA_HF_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_2_CLK>,
+                     <&camcc CAM_CC_IFE_2_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_axi",
+                          "cpas_ahb",
+                          "cpas_fast_ahb_clk",
+                          "cpas_ife_lite",
+                          "cpas_vfe0",
+                          "cpas_vfe1",
+                          "cpas_vfe2",
+                          "csid",
+                          "csiphy0",
+                          "csiphy0_timer",
+                          "csiphy1",
+                          "csiphy1_timer",
+                          "csiphy2",
+                          "csiphy2_timer",
+                          "csiphy3",
+                          "csiphy3_timer",
+                          "csiphy4",
+                          "csiphy4_timer",
+                          "csiphy5",
+                          "csiphy5_timer",
+                          "csiphy6",
+                          "csiphy6_timer",
+                          "csiphy7",
+                          "csiphy7_timer",
+                          "csiphy_rx",
+                          "gcc_axi_hf",
+                          "vfe0",
+                          "vfe0_fast_ahb",
+                          "vfe1",
+                          "vfe1_fast_ahb",
+                          "vfe2",
+                          "vfe2_fast_ahb",
+                          "vfe_lite",
+                          "vfe_lite_ahb",
+                          "vfe_lite_cphy_rx",
+                          "vfe_lite_csid";
+
+            interrupts = <GIC_SPI 601 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 603 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 431 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 605 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 376 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 89 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 278 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 277 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 602 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 604 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 688 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 606 IRQ_TYPE_EDGE_RISING>,
+                         <GIC_SPI 377 IRQ_TYPE_EDGE_RISING>;
+            interrupt-names = "csid0",
+                              "csid1",
+                              "csid2",
+                              "csid_lite0",
+                              "csid_lite1",
+                              "csiphy0",
+                              "csiphy1",
+                              "csiphy2",
+                              "csiphy3",
+                              "csiphy4",
+                              "csiphy5",
+                              "csiphy6",
+                              "csiphy7",
+                              "vfe0",
+                              "vfe1",
+                              "vfe2",
+                              "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>;
+            interconnect-names = "ahb",
+                                 "hf_0_mnoc";
+
+            iommus = <&apps_smmu 0x800 0x20>;
+
+            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";
+
+            vdda-phy-supply = <&vreg_l1e_0p88>;
+            vdda-pll-supply = <&vreg_l3e_1p2>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+                    #address-cells = <1>;
+                    #size-cells = <0>;
+
+                    csiphy_ep0: endpoint@0 {
+                        reg = <0>;
+                        clock-lanes = <7>;
+                        data-lanes = <0 1>;
+                        remote-endpoint = <&sensor_ep>;
+                    };
+                };
+            };
+        };
+    };
diff --git a/Bindings/media/qcom,sm8550-iris.yaml b/Bindings/media/qcom,sm8550-iris.yaml
new file mode 100644 (file)
index 0000000..e424ea8
--- /dev/null
@@ -0,0 +1,158 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/qcom,sm8550-iris.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm iris video encode and decode accelerators
+
+maintainers:
+  - Vikash Garodia <quic_vgarodia@quicinc.com>
+  - Dikshita Agarwal <quic_dikshita@quicinc.com>
+
+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
+
+  power-domains:
+    maxItems: 4
+
+  power-domain-names:
+    items:
+      - const: venus
+      - const: vcodec0
+      - const: mxc
+      - const: mmcx
+
+  clocks:
+    maxItems: 3
+
+  clock-names:
+    items:
+      - const: iface
+      - const: core
+      - const: vcodec0_core
+
+  interconnects:
+    maxItems: 2
+
+  interconnect-names:
+    items:
+      - const: cpu-cfg
+      - const: video-mem
+
+  resets:
+    maxItems: 1
+
+  reset-names:
+    items:
+      - const: bus
+
+  iommus:
+    maxItems: 2
+
+  dma-coherent: true
+
+  operating-points-v2: true
+
+  opp-table:
+    type: object
+
+required:
+  - compatible
+  - power-domain-names
+  - interconnects
+  - interconnect-names
+  - resets
+  - reset-names
+  - iommus
+  - dma-coherent
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,rpmh.h>
+    #include <dt-bindings/clock/qcom,sm8550-gcc.h>
+    #include <dt-bindings/clock/qcom,sm8450-videocc.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interconnect/qcom,icc.h>
+    #include <dt-bindings/interconnect/qcom,sm8550-rpmh.h>
+    #include <dt-bindings/power/qcom-rpmpd.h>
+    #include <dt-bindings/power/qcom,rpmhpd.h>
+
+    video-codec@aa00000 {
+        compatible = "qcom,sm8550-iris";
+        reg = <0x0aa00000 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";
+
+        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_ALWAYS
+                         &config_noc SLAVE_VENUS_CFG QCOM_ICC_TAG_ALWAYS>,
+                        <&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 0x0000>,
+                 <&apps_smmu 0x1947 0x0000>;
+        dma-coherent;
+
+        operating-points-v2 = <&iris_opp_table>;
+
+        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_turbo>,
+                                <&rpmhpd_opp_turbo>;
+            };
+
+            opp-533333334 {
+                opp-hz = /bits/ 64 <533333334>;
+                required-opps = <&rpmhpd_opp_turbo_l1>,
+                                <&rpmhpd_opp_turbo_l1>;
+            };
+        };
+    };
+...
diff --git a/Bindings/media/snps,dw-hdmi-rx.yaml b/Bindings/media/snps,dw-hdmi-rx.yaml
new file mode 100644 (file)
index 0000000..510e94e
--- /dev/null
@@ -0,0 +1,132 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Device Tree bindings for Synopsys DesignWare HDMI RX Controller
+
+---
+$id: http://devicetree.org/schemas/media/snps,dw-hdmi-rx.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Synopsys DesignWare HDMI RX Controller
+
+maintainers:
+  - Shreeya Patel <shreeya.patel@collabora.com>
+
+description:
+  Synopsys DesignWare HDMI Input Controller preset on RK3588 SoCs
+  allowing devices to receive and decode high-resolution video streams
+  from external sources like media players, cameras, laptops, etc.
+
+properties:
+  compatible:
+    items:
+      - const: rockchip,rk3588-hdmirx-ctrler
+      - const: snps,dw-hdmi-rx
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 3
+
+  interrupt-names:
+    items:
+      - const: cec
+      - const: hdmi
+      - const: dma
+
+  clocks:
+    maxItems: 7
+
+  clock-names:
+    items:
+      - const: aclk
+      - const: audio
+      - const: cr_para
+      - const: pclk
+      - const: ref
+      - const: hclk_s_hdmirx
+      - const: hclk_vo1
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 4
+
+  reset-names:
+    items:
+      - const: axi
+      - const: apb
+      - const: ref
+      - const: biu
+
+  memory-region:
+    maxItems: 1
+
+  hpd-gpios:
+    description: GPIO specifier for HPD.
+    maxItems: 1
+
+  rockchip,grf:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      The phandle of the syscon node for the general register file
+      containing HDMIRX PHY status bits.
+
+  rockchip,vo1-grf:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      The phandle of the syscon node for the Video Output GRF register
+      to enable EDID transfer through SDAIN and SCLIN.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+  - clocks
+  - clock-names
+  - power-domains
+  - resets
+  - pinctrl-0
+  - hpd-gpios
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/rockchip,rk3588-cru.h>
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/power/rk3588-power.h>
+    #include <dt-bindings/reset/rockchip,rk3588-cru.h>
+    hdmi_receiver: hdmi-receiver@fdee0000 {
+      compatible = "rockchip,rk3588-hdmirx-ctrler", "snps,dw-hdmi-rx";
+      reg = <0xfdee0000 0x6000>;
+      interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH 0>,
+                   <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH 0>,
+                   <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH 0>;
+      interrupt-names = "cec", "hdmi", "dma";
+      clocks = <&cru ACLK_HDMIRX>,
+               <&cru CLK_HDMIRX_AUD>,
+               <&cru CLK_CR_PARA>,
+               <&cru PCLK_HDMIRX>,
+               <&cru CLK_HDMIRX_REF>,
+               <&cru PCLK_S_HDMIRX>,
+               <&cru HCLK_VO1>;
+      clock-names = "aclk",
+                    "audio",
+                    "cr_para",
+                    "pclk",
+                    "ref",
+                    "hclk_s_hdmirx",
+                    "hclk_vo1";
+      power-domains = <&power RK3588_PD_VO1>;
+      resets = <&cru SRST_A_HDMIRX>, <&cru SRST_P_HDMIRX>,
+               <&cru SRST_HDMIRX_REF>, <&cru SRST_A_HDMIRX_BIU>;
+      reset-names = "axi", "apb", "ref", "biu";
+      memory-region = <&hdmi_receiver_cma>;
+      pinctrl-0 = <&hdmim1_rx_cec &hdmim1_rx_hpdin &hdmim1_rx_scl &hdmim1_rx_sda &hdmirx_5v_detection>;
+      pinctrl-names = "default";
+      hpd-gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
+    };
index 33bedfe..e9fa3cf 100644 (file)
@@ -7,8 +7,8 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: STMicroelectronics STM32 CSI controller
 
 description:
-  The STM32 CSI controller allows connecting a CSI based
-  camera to the DCMIPP camera pipeline.
+  The STM32 CSI controller, coupled with a D-PHY allows connecting a CSI-2
+  based camera to the DCMIPP camera pipeline.
 
 maintainers:
   - Alain Volmat <alain.volmat@foss.st.com>
@@ -109,7 +109,6 @@ examples:
                 endpoint {
                     remote-endpoint = <&imx335_ep>;
                     data-lanes = <1 2>;
-                    bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
                 };
             };
 
index a5598ad..1578514 100644 (file)
@@ -38,50 +38,16 @@ properties:
 patternProperties:
   "^.*@[0-3],[a-f0-9]+$":
     type: object
+    $ref: mc-peripheral-props.yaml#
     additionalProperties: true
-    description:
-      The actual device nodes should be added as subnodes to the SROMc node.
-      These subnodes, in addition to regular device specification, should
-      contain the following properties, describing configuration
-      of the relevant SROM bank.
 
     properties:
-      reg:
-        description:
-          Bank number, base address (relative to start of the bank) and size
-          of the memory mapped for the device. Note that base address will be
-          typically 0 as this is the start of the bank.
-        maxItems: 1
-
       reg-io-width:
         enum: [1, 2]
         description:
           Data width in bytes (1 or 2). If omitted, default of 1 is used.
 
-      samsung,srom-page-mode:
-        description:
-          If page mode is set, 4 data page mode will be configured,
-          else normal (1 data) page mode will be set.
-        type: boolean
-
-      samsung,srom-timing:
-        $ref: /schemas/types.yaml#/definitions/uint32-array
-        minItems: 6
-        maxItems: 6
-        description: |
-          Array of 6 integers, specifying bank timings in the following order:
-          Tacp, Tcah, Tcoh, Tacc, Tcos, Tacs.
-          Each value is specified in cycles and has the following meaning
-          and valid range:
-          Tacp: Page mode access cycle at Page mode (0 - 15)
-          Tcah: Address holding time after CSn (0 - 15)
-          Tcoh: Chip selection hold on OEn (0 - 15)
-          Tacc: Access cycle (0 - 31, the actual time is N + 1)
-          Tcos: Chip selection set-up before OEn (0 - 15)
-          Tacs: Address set-up before CSn (0 - 15)
-
     required:
-      - reg
       - samsung,srom-timing
 
 required:
index 00deeb0..73a6dac 100644 (file)
@@ -36,6 +36,8 @@ allOf:
   - $ref: st,stm32-fmc2-ebi-props.yaml#
   - $ref: ingenic,nemc-peripherals.yaml#
   - $ref: intel,ixp4xx-expansion-peripheral-props.yaml#
+  - $ref: qcom,ebi2-peripheral-props.yaml#
+  - $ref: samsung,exynos4210-srom-peripheral-props.yaml#
   - $ref: ti,gpmc-child.yaml#
   - $ref: fsl/fsl,imx-weim-peripherals.yaml
 
diff --git a/Bindings/memory-controllers/qcom,ebi2-peripheral-props.yaml b/Bindings/memory-controllers/qcom,ebi2-peripheral-props.yaml
new file mode 100644 (file)
index 0000000..29f8c30
--- /dev/null
@@ -0,0 +1,91 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/memory-controllers/qcom,ebi2-peripheral-props.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Peripheral Properties for Qualcomm External Bus Interface 2 (EBI2)
+
+maintainers:
+  - Bjorn Andersson <andersson@kernel.org>
+
+properties:
+  # SLOW chip selects
+  qcom,xmem-recovery-cycles:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: >
+      The time the memory continues to drive the data bus after OE
+      is de-asserted, in order to avoid contention on the data bus.
+      They are inserted when reading one CS and switching to another
+      CS or read followed by write on the same CS. Minimum value is
+      actually 1, so a value of 0 will still yield 1 recovery cycle.
+    minimum: 0
+    maximum: 15
+
+  qcom,xmem-write-hold-cycles:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: >
+      The extra cycles inserted after every write minimum 1. The
+      data out is driven from the time WE is asserted until CS is
+      asserted. With a hold of 1 (value = 0), the CS stays active
+      for 1 extra cycle, etc.
+    minimum: 0
+    maximum: 15
+
+  qcom,xmem-write-delta-cycles:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: >
+      The initial latency for write cycles inserted for the first
+      write to a page or burst memory.
+    minimum: 0
+    maximum: 255
+
+  qcom,xmem-read-delta-cycles:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: >
+      The initial latency for read cycles inserted for the first
+      read to a page or burst memory.
+    minimum: 0
+    maximum: 255
+
+  qcom,xmem-write-wait-cycles:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: >
+      The number of wait cycles for every write access.
+    minimum: 0
+    maximum: 15
+
+  qcom,xmem-read-wait-cycles:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: >
+      The number of wait cycles for every read access.
+    minimum: 0
+    maximum: 15
+
+
+  # FAST chip selects
+  qcom,xmem-address-hold-enable:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: >
+      Holds the address for an extra cycle to meet hold time
+      requirements with ADV assertion, when set to 1.
+    enum: [ 0, 1 ]
+
+  qcom,xmem-adv-to-oe-recovery-cycles:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: >
+      The number of cycles elapsed before an OE assertion, with
+      respect to the cycle where ADV (address valid) is asserted.
+    minimum: 0
+    maximum: 3
+
+  qcom,xmem-read-hold-cycles:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: >
+      The length in cycles of the first segment of a read transfer.
+      For a single read transfer this will be the time from CS
+      assertion to OE assertion.
+    minimum: 0
+    maximum: 15
+
+additionalProperties: true
similarity index 63%
rename from Bindings/bus/qcom,ebi2.yaml
rename to Bindings/memory-controllers/qcom,ebi2.yaml
index 1b1fb35..423d7a7 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 %YAML 1.2
 ---
-$id: http://devicetree.org/schemas/bus/qcom,ebi2.yaml#
+$id: http://devicetree.org/schemas/memory-controllers/qcom,ebi2.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Qualcomm External Bus Interface 2 (EBI2)
@@ -104,91 +104,8 @@ required:
 patternProperties:
   "^.*@[0-5],[0-9a-f]+$":
     type: object
+    $ref: mc-peripheral-props.yaml#
     additionalProperties: true
-    properties:
-      reg:
-        maxItems: 1
-
-      # SLOW chip selects
-      qcom,xmem-recovery-cycles:
-        $ref: /schemas/types.yaml#/definitions/uint32
-        description: >
-          The time the memory continues to drive the data bus after OE
-          is de-asserted, in order to avoid contention on the data bus.
-          They are inserted when reading one CS and switching to another
-          CS or read followed by write on the same CS. Minimum value is
-          actually 1, so a value of 0 will still yield 1 recovery cycle.
-        minimum: 0
-        maximum: 15
-
-      qcom,xmem-write-hold-cycles:
-        $ref: /schemas/types.yaml#/definitions/uint32
-        description: >
-          The extra cycles inserted after every write minimum 1. The
-          data out is driven from the time WE is asserted until CS is
-          asserted. With a hold of 1 (value = 0), the CS stays active
-          for 1 extra cycle, etc.
-        minimum: 0
-        maximum: 15
-
-      qcom,xmem-write-delta-cycles:
-        $ref: /schemas/types.yaml#/definitions/uint32
-        description: >
-          The initial latency for write cycles inserted for the first
-          write to a page or burst memory.
-        minimum: 0
-        maximum: 255
-
-      qcom,xmem-read-delta-cycles:
-        $ref: /schemas/types.yaml#/definitions/uint32
-        description: >
-          The initial latency for read cycles inserted for the first
-          read to a page or burst memory.
-        minimum: 0
-        maximum: 255
-
-      qcom,xmem-write-wait-cycles:
-        $ref: /schemas/types.yaml#/definitions/uint32
-        description: >
-          The number of wait cycles for every write access.
-        minimum: 0
-        maximum: 15
-
-      qcom,xmem-read-wait-cycles:
-        $ref: /schemas/types.yaml#/definitions/uint32
-        description: >
-          The number of wait cycles for every read access.
-        minimum: 0
-        maximum: 15
-
-
-      # FAST chip selects
-      qcom,xmem-address-hold-enable:
-        $ref: /schemas/types.yaml#/definitions/uint32
-        description: >
-          Holds the address for an extra cycle to meet hold time
-          requirements with ADV assertion, when set to 1.
-        enum: [ 0, 1 ]
-
-      qcom,xmem-adv-to-oe-recovery-cycles:
-        $ref: /schemas/types.yaml#/definitions/uint32
-        description: >
-          The number of cycles elapsed before an OE assertion, with
-          respect to the cycle where ADV (address valid) is asserted.
-        minimum: 0
-        maximum: 3
-
-      qcom,xmem-read-hold-cycles:
-        $ref: /schemas/types.yaml#/definitions/uint32
-        description: >
-          The length in cycles of the first segment of a read transfer.
-          For a single read transfer this will be the time from CS
-          assertion to OE assertion.
-        minimum: 0
-        maximum: 15
-
-    required:
-      - reg
 
 additionalProperties: false
 
diff --git a/Bindings/memory-controllers/samsung,exynos4210-srom-peripheral-props.yaml b/Bindings/memory-controllers/samsung,exynos4210-srom-peripheral-props.yaml
new file mode 100644 (file)
index 0000000..c474f90
--- /dev/null
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/memory-controllers/samsung,exynos4210-srom-peripheral-props.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Peripheral Properties for Samsung Exynos SoC SROM Controller
+
+maintainers:
+  - Krzysztof Kozlowski <krzk@kernel.org>
+
+properties:
+  samsung,srom-page-mode:
+    description:
+      If page mode is set, 4 data page mode will be configured,
+      else normal (1 data) page mode will be set.
+    type: boolean
+
+  samsung,srom-timing:
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 6
+    maxItems: 6
+    description: |
+      Array of 6 integers, specifying bank timings in the following order:
+      Tacp, Tcah, Tcoh, Tacc, Tcos, Tacs.
+      Each value is specified in cycles and has the following meaning
+      and valid range:
+      Tacp: Page mode access cycle at Page mode (0 - 15)
+      Tcah: Address holding time after CSn (0 - 15)
+      Tcoh: Chip selection hold on OEn (0 - 15)
+      Tacc: Access cycle (0 - 31, the actual time is N + 1)
+      Tcos: Chip selection set-up before OEn (0 - 15)
+      Tacs: Address set-up before CSn (0 - 15)
+
+additionalProperties: true
index 5dfe77a..d88854e 100644 (file)
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-# # Copyright (c) 2021 Aspeed Tehchnology Inc.
+# # Copyright (c) 2021 Aspeed Technology Inc.
 %YAML 1.2
 ---
 $id: http://devicetree.org/schemas/mfd/aspeed-lpc.yaml#
index 0dc6a40..c7d6cf9 100644 (file)
@@ -19,12 +19,11 @@ properties:
     oneOf:
       - const: atmel,sama5d2-flexcom
       - items:
-          - const: microchip,sam9x7-flexcom
+          - enum:
+              - microchip,sam9x7-flexcom
+              - microchip,sama7d65-flexcom
+              - microchip,sama7g5-flexcom
           - const: atmel,sama5d2-flexcom
-      - items:
-          - const: microchip,sama7g5-flexcom
-          - const: atmel,sama5d2-flexcom
-
 
   reg:
     maxItems: 1
diff --git a/Bindings/mfd/fsl,mcu-mpc8349emitx.yaml b/Bindings/mfd/fsl,mcu-mpc8349emitx.yaml
new file mode 100644 (file)
index 0000000..8beb2ed
--- /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/mfd/fsl,mcu-mpc8349emitx.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale MPC8349E-mITX-compatible Power Management Micro Controller Unit (MCU)
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - fsl,mc9s08qg8-mpc8315erdb
+              - fsl,mc9s08qg8-mpc8349emitx
+              - fsl,mc9s08qg8-mpc8377erdb
+              - fsl,mc9s08qg8-mpc8378erdb
+              - fsl,mc9s08qg8-mpc8379erdb
+          - const: fsl,mcu-mpc8349emitx
+
+  reg:
+    maxItems: 1
+
+  "#gpio-cells":
+    const: 2
+
+  gpio-controller: true
+
+required:
+  - compatible
+  - reg
+  - "#gpio-cells"
+  - gpio-controller
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        mcu@a {
+            #gpio-cells = <2>;
+            compatible = "fsl,mc9s08qg8-mpc8349emitx",
+                         "fsl,mcu-mpc8349emitx";
+            reg = <0x0a>;
+            gpio-controller;
+        };
+    };
diff --git a/Bindings/mfd/maxim,max77705.yaml b/Bindings/mfd/maxim,max77705.yaml
new file mode 100644 (file)
index 0000000..0ec89f0
--- /dev/null
@@ -0,0 +1,158 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/maxim,max77705.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Maxim MAX77705 Companion Power Management and USB Type-C interface
+
+maintainers:
+  - Dzmitry Sankouski <dsankouski@gmail.com>
+
+description: |
+  This is a part of device tree bindings for Maxim MAX77705.
+
+  Maxim MAX77705 is a Companion Power Management and Type-C
+  interface IC which includes charger, fuelgauge, LED, haptic motor driver and
+  Type-C management.
+
+properties:
+  compatible:
+    const: maxim,max77705
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  haptic:
+    type: object
+    additionalProperties: false
+
+    properties:
+      compatible:
+        const: maxim,max77705-haptic
+
+      haptic-supply: true
+
+      pwms:
+        maxItems: 1
+
+    required:
+      - compatible
+      - haptic-supply
+      - pwms
+
+  leds:
+    type: object
+    additionalProperties: false
+    description:
+      Up to 4 LED channels supported.
+
+    properties:
+      compatible:
+        const: maxim,max77705-rgb
+
+      "#address-cells":
+        const: 1
+
+      "#size-cells":
+        const: 0
+
+      multi-led:
+        type: object
+        $ref: /schemas/leds/leds-class-multicolor.yaml#
+        unevaluatedProperties: false
+
+        properties:
+          "#address-cells":
+            const: 1
+
+          "#size-cells":
+            const: 0
+
+        patternProperties:
+          "^led@[0-3]$":
+            type: object
+            $ref: /schemas/leds/common.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              reg:
+                maxItems: 1
+
+            required:
+              - reg
+
+    patternProperties:
+      "^led@[0-3]$":
+        type: object
+        $ref: /schemas/leds/common.yaml#
+        unevaluatedProperties: false
+
+        properties:
+          reg:
+            maxItems: 1
+
+        required:
+          - reg
+
+    required:
+      - compatible
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/leds/common.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        pmic@66 {
+            compatible = "maxim,max77705";
+            reg = <0x66>;
+            interrupt-parent = <&pm8998_gpios>;
+            interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+            pinctrl-0 = <&chg_int_default>;
+            pinctrl-names = "default";
+
+            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 50000>;
+            };
+        };
+    };
index 1902302..f00827c 100644 (file)
@@ -31,6 +31,10 @@ node must be named "audio-codec".
 Required properties for the audio-codec subnode:
 
 - #sound-dai-cells = <1>;
+- interrupts           : should contain jack detection interrupts, with headset
+                         detect interrupt matching "hs" and microphone bias 2
+                         detect interrupt matching "mb2" in interrupt-names.
+- interrupt-names      : Contains "hs", "mb2"
 
 The audio-codec provides two DAIs. The first one is connected to the
 Stereo HiFi DAC and the second one is connected to the Voice DAC.
@@ -52,6 +56,8 @@ Example:
 
                audio-codec {
                        #sound-dai-cells = <1>;
+                       interrupts-extended = <&cpcap 9 0>, <&cpcap 10 0>;
+                       interrupt-names = "hs", "mb2";
 
                        /* HiFi */
                        port@0 {
index a503b67..7e7225a 100644 (file)
@@ -52,6 +52,7 @@ properties:
           - qcom,tcsr-msm8660
           - qcom,tcsr-msm8916
           - qcom,tcsr-msm8917
+          - qcom,tcsr-msm8937
           - qcom,tcsr-msm8953
           - qcom,tcsr-msm8960
           - qcom,tcsr-msm8974
index a4be642..ac5d0c1 100644 (file)
@@ -25,6 +25,7 @@ properties:
       - samsung,s2mps14-pmic
       - samsung,s2mps15-pmic
       - samsung,s2mpu02-pmic
+      - samsung,s2mpu05-pmic
 
   clocks:
     $ref: /schemas/clock/samsung,s2mps11.yaml
@@ -125,6 +126,18 @@ allOf:
         samsung,s2mps11-acokb-ground: false
         samsung,s2mps11-wrstbi-ground: false
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,s2mpu05-pmic
+    then:
+      properties:
+        regulators:
+          $ref: /schemas/regulator/samsung,s2mpu05.yaml
+        samsung,s2mps11-acokb-ground: false
+        samsung,s2mps11-wrstbi-ground: false
+
 examples:
   - |
     #include <dt-bindings/interrupt-controller/irq.h>
index b0e438f..66aa155 100644 (file)
@@ -21,7 +21,9 @@ maintainers:
 
 properties:
   compatible:
-    const: st,stm32-timers
+    enum:
+      - st,stm32-timers
+      - st,stm32mp25-timers
 
   reg:
     maxItems: 1
@@ -36,6 +38,9 @@ properties:
   resets:
     maxItems: 1
 
+  power-domains:
+    maxItems: 1
+
   dmas:
     minItems: 1
     maxItems: 7
@@ -77,7 +82,9 @@ properties:
 
     properties:
       compatible:
-        const: st,stm32-pwm
+        enum:
+          - st,stm32-pwm
+          - st,stm32mp25-pwm
 
       "#pwm-cells":
         const: 3
@@ -113,7 +120,9 @@ properties:
 
     properties:
       compatible:
-        const: st,stm32-timer-counter
+        enum:
+          - st,stm32-timer-counter
+          - st,stm32mp25-timer-counter
 
     required:
       - compatible
@@ -128,12 +137,13 @@ patternProperties:
         enum:
           - st,stm32-timer-trigger
           - st,stm32h7-timer-trigger
+          - st,stm32mp25-timer-trigger
 
       reg:
         description: Identify trigger hardware block.
         items:
           minimum: 0
-          maximum: 16
+          maximum: 19
 
     required:
       - compatible
index 4d67ff2..c6bbb19 100644 (file)
@@ -27,6 +27,7 @@ select:
     compatible:
       contains:
         enum:
+          - airoha,en7581-pbus-csr
           - al,alpine-sysfabric-service
           - allwinner,sun8i-a83t-system-controller
           - allwinner,sun8i-h3-system-controller
@@ -90,6 +91,8 @@ select:
           - microchip,lan966x-cpu-syscon
           - microchip,mpfs-sysreg-scb
           - microchip,sam9x60-sfr
+          - microchip,sama7d65-ddr3phy
+          - microchip,sama7d65-sfrbu
           - microchip,sama7g5-ddr3phy
           - mscc,ocelot-cpu-syscon
           - mstar,msc313-pmsleep
@@ -103,6 +106,7 @@ select:
           - rockchip,rk3288-qos
           - rockchip,rk3368-qos
           - rockchip,rk3399-qos
+          - rockchip,rk3528-qos
           - rockchip,rk3562-qos
           - rockchip,rk3568-qos
           - rockchip,rk3576-qos
@@ -126,6 +130,7 @@ properties:
   compatible:
     items:
       - enum:
+          - airoha,en7581-pbus-csr
           - al,alpine-sysfabric-service
           - allwinner,sun8i-a83t-system-controller
           - allwinner,sun8i-h3-system-controller
@@ -189,6 +194,8 @@ properties:
           - microchip,lan966x-cpu-syscon
           - microchip,mpfs-sysreg-scb
           - microchip,sam9x60-sfr
+          - microchip,sama7d65-ddr3phy
+          - microchip,sama7d65-sfrbu
           - microchip,sama7g5-ddr3phy
           - mscc,ocelot-cpu-syscon
           - mstar,msc313-pmsleep
@@ -202,6 +209,7 @@ properties:
           - rockchip,rk3288-qos
           - rockchip,rk3368-qos
           - rockchip,rk3399-qos
+          - rockchip,rk3528-qos
           - rockchip,rk3562-qos
           - rockchip,rk3568-qos
           - rockchip,rk3576-qos
diff --git a/Bindings/mips/mti,mips-cm.yaml b/Bindings/mips/mti,mips-cm.yaml
new file mode 100644 (file)
index 0000000..d129d63
--- /dev/null
@@ -0,0 +1,57 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mips/mti,mips-cm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MIPS Coherence Manager
+
+description:
+  The Coherence Manager (CM) is responsible for establishing the
+  global ordering of requests from all elements of the system and
+  sending the correct data back to the requester. It supports Cache
+  to Cache transfers.
+  https://training.mips.com/cps_mips/PDF/CPS_Introduction.pdf
+  https://training.mips.com/cps_mips/PDF/Coherency_Manager.pdf
+
+maintainers:
+  - Jiaxun Yang <jiaxun.yang@flygoat.com>
+
+properties:
+  compatible:
+    oneOf:
+      - const: mti,mips-cm
+      - const: mobileye,eyeq6-cm
+        description:
+          On EyeQ6 the HCI (Hardware Cache Initialization) information for
+          the L2 cache in multi-cluster configuration is broken.
+
+  reg:
+    description:
+      Base address and size of the Global Configuration Registers
+      referred to as CMGCR.They are the system programmer's interface
+      to the Coherency Manager. Their location in the memory map is
+      determined at core build time. In a functional system, the base
+      address is provided by the Coprocessor 0, but some
+      System-on-Chip (SoC) designs may not provide an accurate address
+      that needs to be described statically.
+
+    maxItems: 1
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    coherency-manager@1fbf8000 {
+      compatible = "mti,mips-cm";
+      reg = <0x1bde8000 0x8000>;
+    };
+
+  - |
+    coherency-manager {
+      compatible = "mobileye,eyeq6-cm";
+    };
+...
diff --git a/Bindings/misc/atmel-ssc.txt b/Bindings/misc/atmel-ssc.txt
deleted file mode 100644 (file)
index f9fb412..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-* Atmel SSC driver.
-
-Required properties:
-- compatible: "atmel,at91rm9200-ssc" or "atmel,at91sam9g45-ssc"
-       - atmel,at91rm9200-ssc: support pdc transfer
-       - atmel,at91sam9g45-ssc: support dma transfer
-- reg: Should contain SSC registers location and length
-- interrupts: Should contain SSC interrupt
-- clock-names: tuple listing input clock names.
-       Required elements: "pclk"
-- clocks: phandles to input clocks.
-
-
-Required properties for devices compatible with "atmel,at91sam9g45-ssc":
-- dmas: DMA specifier, consisting of a phandle to DMA controller node,
-  the memory interface and SSC DMA channel ID (for tx and rx).
-  See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
-- dma-names: Must be "tx", "rx".
-
-Optional properties:
-  - atmel,clk-from-rk-pin: bool property.
-     - When SSC works in slave mode, according to the hardware design, the
-       clock can get from TK pin, and also can get from RK pin. So, add
-       this parameter to choose where the clock from.
-     - By default the clock is from TK pin, if the clock from RK pin, this
-       property is needed.
-  - #sound-dai-cells: Should contain <0>.
-     - This property makes the SSC into an automatically registered DAI.
-
-Examples:
-- PDC transfer:
-ssc0: ssc@fffbc000 {
-       compatible = "atmel,at91rm9200-ssc";
-       reg = <0xfffbc000 0x4000>;
-       interrupts = <14 4 5>;
-       clocks = <&ssc0_clk>;
-       clock-names = "pclk";
-};
-
-- DMA transfer:
-ssc0: ssc@f0010000 {
-      compatible = "atmel,at91sam9g45-ssc";
-      reg = <0xf0010000 0x4000>;
-      interrupts = <28 4 5>;
-      dmas = <&dma0 1 13>,
-            <&dma0 1 14>;
-      dma-names = "tx", "rx";
-      pinctrl-names = "default";
-      pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
-};
index 0ccd632..9f3b1ed 100644 (file)
@@ -30,38 +30,34 @@ properties:
       - const: allwinner,sun50i-a100-emmc
       - const: allwinner,sun50i-a100-mmc
       - items:
-          - const: allwinner,sun8i-a83t-mmc
+          - enum:
+              - allwinner,sun8i-a83t-mmc
+              - allwinner,suniv-f1c100s-mmc
           - const: allwinner,sun7i-a20-mmc
       - items:
-          - const: allwinner,sun8i-r40-emmc
+          - enum:
+              - allwinner,sun8i-r40-emmc
+              - allwinner,sun50i-h5-emmc
+              - allwinner,sun50i-h6-emmc
           - const: allwinner,sun50i-a64-emmc
       - items:
-          - const: allwinner,sun8i-r40-mmc
+          - enum:
+              - allwinner,sun8i-r40-mmc
+              - allwinner,sun50i-h5-mmc
+              - allwinner,sun50i-h6-mmc
           - const: allwinner,sun50i-a64-mmc
       - items:
-          - const: allwinner,sun50i-h5-emmc
-          - const: allwinner,sun50i-a64-emmc
-      - items:
-          - const: allwinner,sun50i-h5-mmc
-          - const: allwinner,sun50i-a64-mmc
-      - items:
-          - const: allwinner,sun50i-h6-emmc
-          - const: allwinner,sun50i-a64-emmc
-      - items:
-          - const: allwinner,sun50i-h6-mmc
-          - const: allwinner,sun50i-a64-mmc
-      - items:
-          - const: allwinner,sun20i-d1-emmc
-          - const: allwinner,sun50i-a100-emmc
-      - items:
-          - const: allwinner,sun50i-h616-emmc
+          - enum:
+              - allwinner,sun20i-d1-emmc
+              - allwinner,sun50i-h616-emmc
+              - allwinner,sun55i-a523-emmc
           - const: allwinner,sun50i-a100-emmc
       - items:
           - const: allwinner,sun50i-h616-mmc
           - const: allwinner,sun50i-a100-mmc
       - items:
-          - const: allwinner,suniv-f1c100s-mmc
-          - const: allwinner,sun7i-a20-mmc
+          - const: allwinner,sun55i-a523-mmc
+          - const: allwinner,sun20i-d1-mmc
 
   reg:
     maxItems: 1
index 022682a..0d4d9ca 100644 (file)
@@ -60,6 +60,9 @@ patternProperties:
       bus-width:
         enum: [1, 4]
 
+    required:
+      - compatible
+
     unevaluatedProperties: false
 
 required:
diff --git a/Bindings/mmc/atmel,hsmci.yaml b/Bindings/mmc/atmel,hsmci.yaml
new file mode 100644 (file)
index 0000000..151b414
--- /dev/null
@@ -0,0 +1,106 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mmc/atmel,hsmci.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Atmel High-Speed MultiMedia Card Interface (HSMCI)
+
+description:
+  The Atmel HSMCI controller provides an interface for MMC, SD, and SDIO memory
+  cards.
+
+maintainers:
+  - Nicolas Ferre <nicolas.ferre@microchip.com>
+  - Aubin Constans <aubin.constans@microchip.com>
+
+allOf:
+  - $ref: mmc-controller.yaml
+
+properties:
+  compatible:
+    const: atmel,hsmci
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  dmas:
+    maxItems: 1
+
+  dma-names:
+    const: rxtx
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    const: mci_clk
+
+  "#address-cells":
+    const: 1
+    description: Used for slot IDs.
+
+  "#size-cells":
+    const: 0
+
+patternProperties:
+  "slot@[0-2]$":
+    $ref: mmc-slot.yaml
+    description: A slot node representing an MMC, SD, or SDIO slot.
+
+    properties:
+      reg:
+        enum: [0, 1]
+
+    required:
+      - reg
+      - bus-width
+
+    unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - "#address-cells"
+  - "#size-cells"
+
+anyOf:
+  - required:
+      - slot@0
+  - required:
+      - slot@1
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/clock/at91.h>
+    mmc@f0008000 {
+      compatible = "atmel,hsmci";
+      reg = <0xf0008000 0x600>;
+      interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
+      clocks = <&mci0_clk>;
+      clock-names = "mci_clk";
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      slot@0 {
+        reg = <0>;
+        bus-width = <4>;
+        cd-gpios = <&pioD 15 0>;
+        cd-inverted;
+      };
+
+      slot@1 {
+        reg = <1>;
+        bus-width = <4>;
+      };
+    };
+...
diff --git a/Bindings/mmc/atmel-hsmci.txt b/Bindings/mmc/atmel-hsmci.txt
deleted file mode 100644 (file)
index 07ad020..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-* Atmel High Speed MultiMedia Card Interface
-
-This controller on atmel products provides an interface for MMC, SD and SDIO
-types of memory cards.
-
-This file documents differences between the core properties described
-by mmc.txt and the properties used by the atmel-mci driver.
-
-1) MCI node
-
-Required properties:
-- compatible: should be "atmel,hsmci"
-- #address-cells: should be one. The cell is the slot id.
-- #size-cells: should be zero.
-- at least one slot node
-- clock-names: tuple listing input clock names.
-       Required elements: "mci_clk"
-- clocks: phandles to input clocks.
-
-The node contains child nodes for each slot that the platform uses
-
-Example MCI node:
-
-mmc0: mmc@f0008000 {
-       compatible = "atmel,hsmci";
-       reg = <0xf0008000 0x600>;
-       interrupts = <12 4>;
-       #address-cells = <1>;
-       #size-cells = <0>;
-       clock-names = "mci_clk";
-       clocks = <&mci0_clk>;
-
-       [ child node definitions...]
-};
-
-2) slot nodes
-
-Required properties:
-- reg: should contain the slot id.
-- bus-width: number of data lines connected to the controller
-
-Optional properties:
-- cd-gpios: specify GPIOs for card detection
-- cd-inverted: invert the value of external card detect gpio line
-- wp-gpios: specify GPIOs for write protection
-
-Example slot node:
-
-slot@0 {
-       reg = <0>;
-       bus-width = <4>;
-       cd-gpios = <&pioD 15 0>
-       cd-inverted;
-};
-
-Example full MCI node:
-mmc0: mmc@f0008000 {
-       compatible = "atmel,hsmci";
-       reg = <0xf0008000 0x600>;
-       interrupts = <12 4>;
-       #address-cells = <1>;
-       #size-cells = <0>;
-       slot@0 {
-               reg = <0>;
-               bus-width = <4>;
-               cd-gpios = <&pioD 15 0>
-               cd-inverted;
-       };
-       slot@1 {
-               reg = <1>;
-               bus-width = <4>;
-       };
-};
index b9b9995..b98a84f 100644 (file)
@@ -57,6 +57,7 @@ properties:
               - fsl,imx8mp-usdhc
               - fsl,imx8ulp-usdhc
               - fsl,imx93-usdhc
+              - fsl,imx94-usdhc
               - fsl,imx95-usdhc
           - const: fsl,imx8mm-usdhc
       - items:
index 9d7a129..26e4f0f 100644 (file)
@@ -24,7 +24,7 @@ properties:
   $nodename:
     pattern: "^mmc(@.*)?$"
 
-unevaluatedProperties: true
+additionalProperties: true
 
 examples:
   - |
index 1f06678..ca3d011 100644 (file)
@@ -29,7 +29,6 @@ properties:
     maxItems: 1
 
 required:
-  - compatible
   - reg
 
 unevaluatedProperties: false
index af378b9..773baa6 100644 (file)
@@ -68,6 +68,9 @@ properties:
               - renesas,sdhi-r9a08g045 # RZ/G3S
               - renesas,sdhi-r9a09g011 # RZ/V2M
           - const: renesas,rzg2l-sdhi
+      - items:
+          - const: renesas,sdhi-r9a09g047 # RZ/G3E
+          - const: renesas,sdhi-r9a09g057 # RZ/V2H(P)
 
   reg:
     maxItems: 1
@@ -211,6 +214,19 @@ allOf:
         sectioned off to be run by a separate second clock source to allow
         the main core clock to be turned off to save power.
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,sdhi-r9a09g057
+    then:
+      properties:
+        vqmmc-regulator:
+          type: object
+          description: VQMMC SD regulator
+          $ref: /schemas/regulator/regulator.yaml#
+          unevaluatedProperties: false
+
 required:
   - compatible
   - reg
index 06df126..bf27311 100644 (file)
@@ -38,6 +38,8 @@ properties:
               - rockchip,rk3328-dw-mshc
               - rockchip,rk3368-dw-mshc
               - rockchip,rk3399-dw-mshc
+              - rockchip,rk3528-dw-mshc
+              - rockchip,rk3562-dw-mshc
               - rockchip,rk3568-dw-mshc
               - rockchip,rk3588-dw-mshc
               - rockchip,rv1108-dw-mshc
index ef2d1d7..e8bd49d 100644 (file)
@@ -24,6 +24,8 @@ properties:
           - samsung,exynos5420-dw-mshc-smu
           - samsung,exynos7-dw-mshc
           - samsung,exynos7-dw-mshc-smu
+          - samsung,exynos7870-dw-mshc
+          - samsung,exynos7870-dw-mshc-smu
       - items:
           - enum:
               - samsung,exynos5433-dw-mshc-smu
index c3d5e02..e6e6040 100644 (file)
@@ -14,7 +14,10 @@ properties:
   compatible:
     oneOf:
       - items:
-          - const: rockchip,rk3576-dwcmshc
+          - enum:
+              - rockchip,rk3528-dwcmshc
+              - rockchip,rk3562-dwcmshc
+              - rockchip,rk3576-dwcmshc
           - const: rockchip,rk3588-dwcmshc
       - enum:
           - rockchip,rk3568-dwcmshc
index 15b63bb..b90d3b4 100644 (file)
@@ -42,7 +42,7 @@ required:
   - clock-names
   - interrupts
 
-unevaluatedProperties: true
+unevaluatedProperties: false
 
 examples:
   - |
diff --git a/Bindings/mtd/atmel,dataflash.yaml b/Bindings/mtd/atmel,dataflash.yaml
new file mode 100644 (file)
index 0000000..8c72fa3
--- /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/mtd/atmel,dataflash.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Atmel DataFlash
+
+maintainers:
+  - Nayab Sayed <nayabbasha.sayed@microchip.com>
+
+description:
+  The Atmel DataFlash is a low pin-count serial interface sequential access
+  Flash memory, compatible with SPI standard. The device tree may optionally
+  contain sub-nodes describing partitions of the address space.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - atmel,at45db321d
+              - atmel,at45db041e
+              - atmel,at45db642d
+              - atmel,at45db021d
+          - const: atmel,at45
+          - const: atmel,dataflash
+      - items:
+          - const: atmel,at45
+          - const: atmel,dataflash
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+allOf:
+  - $ref: mtd.yaml#
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        flash@1 {
+            compatible = "atmel,at45db321d", "atmel,at45", "atmel,dataflash";
+            reg = <1>;
+        };
+    };
diff --git a/Bindings/mtd/atmel-dataflash.txt b/Bindings/mtd/atmel-dataflash.txt
deleted file mode 100644 (file)
index 1889a4d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-* Atmel Data Flash
-
-Required properties:
-- compatible : "atmel,<model>", "atmel,<series>", "atmel,dataflash".
-
-The device tree may optionally contain sub-nodes describing partitions of the
-address space. See partition.txt for more detail.
-
-Example:
-
-flash@1 {
-       #address-cells = <1>;
-       #size-cells = <1>;
-       compatible = "atmel,at45db321d", "atmel,at45", "atmel,dataflash";
-       spi-max-frequency = <25000000>;
-       reg = <1>;
-};
index f9eb186..0badb2e 100644 (file)
@@ -29,7 +29,14 @@ properties:
           - enum:
               - fsl,imx8mm-gpmi-nand
               - fsl,imx8mn-gpmi-nand
+              - fsl,imx8mp-gpmi-nand
+              - fsl,imx8mq-gpmi-nand
           - const: fsl,imx7d-gpmi-nand
+      - items:
+          - enum:
+              - fsl,imx8dxl-gpmi-nand
+              - fsl,imx8qm-gpmi-nand
+          - const: fsl,imx8qxp-gpmi-nand
 
   reg:
     items:
index 18f6733..1b375de 100644 (file)
@@ -122,6 +122,8 @@ properties:
   '#size-cells':
     const: 1
 
+  ranges: true
+
   big-endian: true
   little-endian: true
 
@@ -143,8 +145,7 @@ then:
   required:
     - syscon
 
-# FIXME: A parent bus may define timing properties
-additionalProperties: true
+unevaluatedProperties: false
 
 examples:
   - |
index cf4198e..bd8f7b6 100644 (file)
@@ -14,8 +14,12 @@ allOf:
 
 properties:
   compatible:
-    const: fsl,imx27-nand
-
+    oneOf:
+      - const: fsl,imx27-nand
+      - items:
+          - enum:
+              - fsl,imx31-nand
+          - const: fsl,imx27-nand
   reg:
     maxItems: 1
 
index c578637..0fdd112 100644 (file)
@@ -63,6 +63,14 @@ properties:
   "#size-cells":
     const: 0
 
+  airoha,npu:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to the node used to configure the NPU module.
+      The Airoha Network Processor Unit (NPU) provides a configuration
+      interface to implement hardware flow offloading programming Packet
+      Processor Engine (PPE) flow table.
+
 patternProperties:
   "^ethernet@[1-4]$":
     type: object
@@ -132,6 +140,8 @@ examples:
                      <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
                      <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
 
+        airoha,npu = <&npu>;
+
         #address-cells = <1>;
         #size-cells = <0>;
 
diff --git a/Bindings/net/airoha,en7581-npu.yaml b/Bindings/net/airoha,en7581-npu.yaml
new file mode 100644 (file)
index 0000000..76dd97c
--- /dev/null
@@ -0,0 +1,84 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/airoha,en7581-npu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Airoha Network Processor Unit for EN7581 SoC
+
+maintainers:
+  - Lorenzo Bianconi <lorenzo@kernel.org>
+
+description:
+  The Airoha Network Processor Unit (NPU) provides a configuration interface
+  to implement wired and wireless hardware flow offloading programming Packet
+  Processor Engine (PPE) flow table.
+
+properties:
+  compatible:
+    enum:
+      - airoha,en7581-npu
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: mbox host irq line
+      - description: watchdog0 irq line
+      - description: watchdog1 irq line
+      - description: watchdog2 irq line
+      - description: watchdog3 irq line
+      - description: watchdog4 irq line
+      - description: watchdog5 irq line
+      - description: watchdog6 irq line
+      - description: watchdog7 irq line
+      - description: wlan irq line0
+      - description: wlan irq line1
+      - description: wlan irq line2
+      - description: wlan irq line3
+      - description: wlan irq line4
+      - description: wlan irq line5
+
+  memory-region:
+    maxItems: 1
+    description:
+      Memory used to store NPU firmware binary.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - memory-region
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    soc {
+      #address-cells = <2>;
+      #size-cells = <2>;
+
+      npu@1e900000 {
+        compatible = "airoha,en7581-npu";
+        reg = <0 0x1e900000 0 0x313000>;
+        interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
+        memory-region = <&npu_binary>;
+      };
+    };
index 798a4c1..0cd78d7 100644 (file)
@@ -152,6 +152,12 @@ properties:
           The second range is is for the Amlogic specific configuration
           (for example the PRG_ETHERNET register range on Meson8b and newer)
 
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    const: macirq
+
 required:
   - compatible
   - reg
index 0a2d7ba..d02e9dd 100644 (file)
@@ -17,6 +17,9 @@ description:
 maintainers:
   - Neeraj Sanjay Kale <neeraj.sanjaykale@nxp.com>
 
+allOf:
+  - $ref: bluetooth-controller.yaml#
+
 properties:
   compatible:
     enum:
@@ -40,10 +43,20 @@ properties:
       Host-To-Chip power save mechanism is driven by this GPIO
       connected to BT_WAKE_IN pin of the NXP chipset.
 
+  nxp,wakein-pin:
+    $ref: /schemas/types.yaml#/definitions/uint8
+    description:
+      The GPIO number of the NXP chipset used for BT_WAKE_IN.
+
+  nxp,wakeout-pin:
+    $ref: /schemas/types.yaml#/definitions/uint8
+    description:
+      The GPIO number of the NXP chipset used for BT_WAKE_OUT.
+
 required:
   - compatible
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
@@ -54,5 +67,8 @@ examples:
             fw-init-baudrate = <3000000>;
             firmware-name = "uartuart8987_bt_v0.bin";
             device-wakeup-gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
+            nxp,wakein-pin = /bits/ 8 <18>;
+            nxp,wakeout-pin = /bits/ 8 <19>;
+            local-bd-address = [66 55 44 33 22 11];
         };
     };
index a72152f..6353a33 100644 (file)
@@ -19,6 +19,7 @@ properties:
       - qcom,qca2066-bt
       - qcom,qca6174-bt
       - qcom,qca9377-bt
+      - qcom,wcn3950-bt
       - qcom,wcn3988-bt
       - qcom,wcn3990-bt
       - qcom,wcn3991-bt
@@ -138,6 +139,7 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,wcn3950-bt
               - qcom,wcn3988-bt
               - qcom,wcn3990-bt
               - qcom,wcn3991-bt
index 97dd1a7..f81d56f 100644 (file)
@@ -10,9 +10,6 @@ title:
 maintainers:
   - Marc Kleine-Budde <mkl@pengutronix.de>
 
-allOf:
-  - $ref: can-controller.yaml#
-
 properties:
   compatible:
     oneOf:
@@ -28,6 +25,7 @@ properties:
           - fsl,vf610-flexcan
           - fsl,ls1021ar2-flexcan
           - fsl,lx2160ar1-flexcan
+          - nxp,s32g2-flexcan
       - items:
           - enum:
               - fsl,imx53-flexcan
@@ -43,12 +41,25 @@ properties:
           - enum:
               - fsl,ls1028ar1-flexcan
           - const: fsl,lx2160ar1-flexcan
+      - items:
+          - enum:
+              - nxp,s32g3-flexcan
+          - const: nxp,s32g2-flexcan
+      - items:
+          - enum:
+              - fsl,imx94-flexcan
+          - const: fsl,imx95-flexcan
 
   reg:
     maxItems: 1
 
   interrupts:
-    maxItems: 1
+    minItems: 1
+    maxItems: 4
+
+  interrupt-names:
+    minItems: 1
+    maxItems: 4
 
   clocks:
     maxItems: 2
@@ -70,6 +81,9 @@ properties:
   xceiver-supply:
     description: Regulator that powers the CAN transceiver.
 
+  phys:
+    maxItems: 1
+
   big-endian:
     $ref: /schemas/types.yaml#/definitions/flag
     description: |
@@ -136,6 +150,41 @@ required:
   - reg
   - interrupts
 
+allOf:
+  - $ref: can-controller.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: nxp,s32g2-flexcan
+    then:
+      properties:
+        interrupts:
+          items:
+            - description: Message Buffer interrupt for mailboxes 0-7 and Enhanced RX FIFO
+            - description: Device state change
+            - description: Bus Error detection
+            - description: Message Buffer interrupt for mailboxes 8-127
+        interrupt-names:
+          items:
+            - const: mb-0
+            - const: state
+            - const: berr
+            - const: mb-1
+      required:
+        - interrupt-names
+    else:
+      properties:
+        interrupts:
+          maxItems: 1
+        interrupt-names: false
+  - if:
+      required:
+        - xceiver-supply
+    then:
+      properties:
+        phys: false
+
 additionalProperties: false
 
 examples:
index e0ec53b..1525a50 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/can/microchip,mcp2510.yaml#
+$id: http://devicetree.org/schemas/net/can/microchip,mcp2510.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Microchip MCP251X stand-alone CAN controller
index 2a98b26..c155c9c 100644 (file)
@@ -40,7 +40,7 @@ properties:
 
   microchip,rx-int-gpios:
     description:
-      GPIO phandle of GPIO connected to to INT1 pin of the MCP251XFD, which
+      GPIO phandle of GPIO connected to INT1 pin of the MCP251XFD, which
       signals a pending RX interrupt.
     maxItems: 1
 
index 3c30dd2..8d69846 100644 (file)
@@ -197,7 +197,6 @@ examples:
     };
 
   - |
-    #include <dt-bindings/clock/xlnx-zynqmp-clk.h>
     #include <dt-bindings/power/xlnx-zynqmp-power.h>
     #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
     #include <dt-bindings/phy/phy.h>
@@ -210,9 +209,9 @@ examples:
                     interrupt-parent = <&gic>;
                     interrupts = <0 59 4>, <0 59 4>;
                     reg = <0x0 0xff0c0000 0x0 0x1000>;
-                    clocks = <&zynqmp_clk LPD_LSBUS>, <&zynqmp_clk GEM1_REF>,
-                             <&zynqmp_clk GEM1_TX>, <&zynqmp_clk GEM1_RX>,
-                             <&zynqmp_clk GEM_TSU>;
+                    clocks = <&zynqmp_clk 31>, <&zynqmp_clk 105>,
+                             <&zynqmp_clk 51>, <&zynqmp_clk 50>,
+                             <&zynqmp_clk 44>;
                     clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
                     #address-cells = <1>;
                     #size-cells = <0>;
index 4c78c54..d6c957a 100644 (file)
@@ -16,6 +16,7 @@ properties:
   compatible:
     oneOf:
       - const: brcm,bcm5325
+      - const: brcm,bcm53101
       - const: brcm,bcm53115
       - const: brcm,bcm53125
       - const: brcm,bcm53128
@@ -77,6 +78,7 @@ allOf:
           contains:
             enum:
               - brcm,bcm5325
+              - brcm,bcm53101
               - brcm,bcm53115
               - brcm,bcm53125
               - brcm,bcm53128
index 45819b2..a2d4c62 100644 (file)
@@ -74,19 +74,17 @@ properties:
       - rev-rmii
       - moca
 
-      # RX and TX delays are added by the MAC when required
+      # RX and TX delays are provided by the PCB. See below
       - rgmii
 
-      # RGMII with internal RX and TX delays provided by the PHY,
-      # the MAC should not add the RX or TX delays in this case
+      # RX and TX delays are not provided by the PCB. This is the most
+      # frequent case. See below
       - rgmii-id
 
-      # RGMII with internal RX delay provided by the PHY, the MAC
-      # should not add an RX delay in this case
+      # TX delay is provided by the PCB. See below
       - rgmii-rxid
 
-      # RGMII with internal TX delay provided by the PHY, the MAC
-      # should not add an TX delay in this case
+      # RX delay is provided by the PCB. See below
       - rgmii-txid
       - rtbi
       - smii
@@ -286,4 +284,89 @@ allOf:
 
 additionalProperties: true
 
+# Informative
+# ===========
+#
+# 'phy-modes' & 'phy-connection-type' properties 'rgmii', 'rgmii-id',
+# 'rgmii-rxid', and 'rgmii-txid' are frequently used wrongly by
+# developers. This informative section clarifies their usage.
+#
+# The RGMII specification requires a 2ns delay between the data and
+# clock signals on the RGMII bus. How this delay is implemented is not
+# specified.
+#
+# One option is to make the clock traces on the PCB longer than the
+# data traces. A sufficiently difference in length can provide the 2ns
+# delay. If both the RX and TX delays are implemented in this manner,
+# 'rgmii' should be used, so indicating the PCB adds the delays.
+#
+# If the PCB does not add these delays via extra long traces,
+# 'rgmii-id' should be used. Here, 'id' refers to 'internal delay',
+# where either the MAC or PHY adds the delay.
+#
+# If only one of the two delays are implemented via extra long clock
+# lines, either 'rgmii-rxid' or 'rgmii-txid' should be used,
+# indicating the MAC or PHY should implement one of the delays
+# internally, while the PCB implements the other delay.
+#
+# Device Tree describes hardware, and in this case, it describes the
+# PCB between the MAC and the PHY, if the PCB implements delays or
+# not.
+#
+# In practice, very few PCBs make use of extra long clock lines. Hence
+# any RGMII phy mode other than 'rgmii-id' is probably wrong, and is
+# unlikely to be accepted during review without details provided in
+# the commit description and comments in the .dts file.
+#
+# When the PCB does not implement the delays, the MAC or PHY must.  As
+# such, this is software configuration, and so not described in Device
+# Tree.
+#
+# The following describes how Linux implements the configuration of
+# the MAC and PHY to add these delays when the PCB does not. As stated
+# above, developers often get this wrong, and the aim of this section
+# is reduce the frequency of these errors by Linux developers. Other
+# users of the Device Tree may implement it differently, and still be
+# consistent with both the normative and informative description
+# above.
+#
+# By default in Linux, when using phylib/phylink, the MAC is expected
+# to read the 'phy-mode' from Device Tree, not implement any delays,
+# and pass the value to the PHY. The PHY will then implement delays as
+# specified by the 'phy-mode'. The PHY should always be reconfigured
+# to implement the needed delays, replacing any setting performed by
+# strapping or the bootloader, etc.
+#
+# Experience to date is that all PHYs which implement RGMII also
+# implement the ability to add or not add the needed delays. Hence
+# this default is expected to work in all cases. Ignoring this default
+# is likely to be questioned by Reviews, and require a strong argument
+# to be accepted.
+#
+# There are a small number of cases where the MAC has hard coded
+# delays which cannot be disabled. The 'phy-mode' only describes the
+# PCB.  The inability to disable the delays in the MAC does not change
+# the meaning of 'phy-mode'. It does however mean that a 'phy-mode' of
+# 'rgmii' is now invalid, it cannot be supported, since both the PCB
+# and the MAC and PHY adding delays cannot result in a functional
+# link. Thus the MAC should report a fatal error for any modes which
+# cannot be supported. When the MAC implements the delay, it must
+# ensure that the PHY does not also implement the same delay. So it
+# must modify the phy-mode it passes to the PHY, removing the delay it
+# has added. Failure to remove the delay will result in a
+# non-functioning link.
+#
+# Sometimes there is a need to fine tune the delays. Often the MAC or
+# PHY can perform this fine tuning. In the MAC node, the Device Tree
+# properties 'rx-internal-delay-ps' and 'tx-internal-delay-ps' should
+# be used to indicate fine tuning performed by the MAC. The values
+# expected here are small. A value of 2000ps, i.e 2ns, and a phy-mode
+# of 'rgmii' will not be accepted by Reviewers.
+#
+# If the PHY is to perform fine tuning, the properties
+# 'rx-internal-delay-ps' and 'tx-internal-delay-ps' in the PHY node
+# should be used. When the PHY is implementing delays, e.g. 'rgmii-id'
+# these properties should have a value near to 2000ps. If the PCB is
+# implementing delays, e.g. 'rgmii', a small value can be used to fine
+# tune the delay added by the PCB.
 ...
index 2c71454..824bbe4 100644 (file)
@@ -232,6 +232,12 @@ properties:
       PHY's that have configurable TX internal delays. If this property is
       present then the PHY applies the TX delay.
 
+  tx-amplitude-100base-tx-percent:
+    description:
+      Transmit amplitude gain applied for 100BASE-TX. 100% matches 2V
+      peak-to-peak specified in ANSI X3.263. When omitted, the PHYs default
+      will be left as is.
+
   leds:
     type: object
 
index 9bcbacb..55d6a83 100644 (file)
@@ -44,6 +44,9 @@ properties:
   phy-mode:
     enum:
       - rgmii
+      - rgmii-id
+      - rgmii-rxid
+      - rgmii-txid
       - rmii
 
   phy-handle: true
diff --git a/Bindings/net/fsl,gianfar-mdio.yaml b/Bindings/net/fsl,gianfar-mdio.yaml
new file mode 100644 (file)
index 0000000..03c819b
--- /dev/null
@@ -0,0 +1,112 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/fsl,gianfar-mdio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale Gianfar (TSEC) MDIO Device
+
+description:
+  This binding describes the MDIO is a bus to which the PHY devices are
+  connected. For each device that exists on this bus, a child node should be
+  created.
+
+  Some TSECs are associated with an internal Ten-Bit Interface (TBI) PHY. This
+  PHY is accessed through the local MDIO bus. These buses are defined similarly
+  to the mdio buses, except they are compatible with "fsl,gianfar-tbi". The TBI
+  PHYs underneath them are similar to normal PHYs, but the reg property is
+  considered instructive, rather than descriptive. The reg property should be
+  chosen so it doesn't interfere with other PHYs on the bus.
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+# This is needed to distinguish gianfar.yaml and gianfar-mdio.yaml, because
+# both use compatible = "gianfar" (with different device_type values)
+select:
+  oneOf:
+    - properties:
+        compatible:
+          contains:
+            const: gianfar
+        device_type:
+          const: mdio
+      required:
+        - device_type
+
+    - properties:
+        compatible:
+          contains:
+            enum:
+              - fsl,gianfar-tbi
+              - fsl,gianfar-mdio
+              - fsl,etsec2-tbi
+              - fsl,etsec2-mdio
+              - fsl,ucc-mdio
+              - ucc_geth_phy
+
+  required:
+    - compatible
+
+properties:
+  compatible:
+    enum:
+      - fsl,gianfar-tbi
+      - fsl,gianfar-mdio
+      - fsl,etsec2-tbi
+      - fsl,etsec2-mdio
+      - fsl,ucc-mdio
+      - gianfar
+      - ucc_geth_phy
+
+  reg:
+    minItems: 1
+    items:
+      - description:
+          Offset and length of the register set for the device
+
+      - description:
+          Optionally, the offset and length of the TBIPA register (TBI PHY
+          address register). If TBIPA register is not specified, the driver
+          will attempt to infer it from the register set specified (your
+          mileage may vary).
+
+  device_type:
+    const: mdio
+
+required:
+  - reg
+  - "#address-cells"
+  - "#size-cells"
+
+allOf:
+  - $ref: mdio.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: ucc_geth_phy
+    then:
+      required:
+        - device_type
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    soc {
+        #address-cells = <1>;
+        #size-cells = <1>;
+
+        mdio@24520 {
+            reg = <0x24520 0x20>;
+            compatible = "fsl,gianfar-mdio";
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            ethernet-phy@0 {
+                reg = <0>;
+            };
+        };
+    };
diff --git a/Bindings/net/fsl,gianfar.yaml b/Bindings/net/fsl,gianfar.yaml
new file mode 100644 (file)
index 0000000..f92f284
--- /dev/null
@@ -0,0 +1,248 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/fsl,gianfar.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale Three-Speed Ethernet Controller (TSEC), "Gianfar"
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+# This is needed to distinguish gianfar.yaml and gianfar-mdio.yaml, because
+# both use compatible = "gianfar" (with different device_type values)
+select:
+  oneOf:
+    - properties:
+        compatible:
+          contains:
+            const: gianfar
+        device_type:
+          const: network
+      required:
+        - device_type
+
+    - properties:
+        compatible:
+          const: fsl,etsec2
+
+  required:
+    - compatible
+
+properties:
+  compatible:
+    enum:
+      - gianfar
+      - fsl,etsec2
+
+  device_type:
+    const: network
+
+  model:
+    enum:
+      - FEC
+      - TSEC
+      - eTSEC
+
+  reg:
+    maxItems: 1
+
+  ranges: true
+
+  "#address-cells":
+    enum: [ 1, 2 ]
+
+  "#size-cells":
+    enum: [ 1, 2 ]
+
+  cell-index:
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  interrupts:
+    minItems: 1
+    items:
+      - description: Transmit interrupt or single combined interrupt
+      - description: Receive interrupt
+      - description: Error interrupt
+
+  dma-coherent: true
+
+  fsl,magic-packet:
+    type: boolean
+    description:
+      If present, indicates that the hardware supports waking up via magic packet.
+
+  fsl,wake-on-filer:
+    type: boolean
+    description:
+      If present, indicates that the hardware supports waking up by Filer
+      General Purpose Interrupt (FGPI) asserted on the Rx int line. This is
+      an advanced power management capability allowing certain packet types
+      (user) defined by filer rules to wake up the system.
+
+  bd-stash:
+    type: boolean
+    description:
+      If present, indicates that the hardware supports stashing buffer
+      descriptors in the L2.
+
+  rx-stash-len:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      Denotes the number of bytes of a received buffer to stash in the L2.
+
+  rx-stash-idx:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      Denotes the index of the first byte from the received buffer to stash in
+      the L2.
+
+  fsl,num_rx_queues:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Number of receive queues
+    const: 8
+
+  fsl,num_tx_queues:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Number of transmit queues
+    const: 8
+
+  tbi-handle:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: Reference (phandle) to the TBI node
+
+required:
+  - compatible
+  - model
+
+patternProperties:
+  "^mdio@[0-9a-f]+$":
+    $ref: /schemas/net/fsl,gianfar-mdio.yaml#
+
+allOf:
+  - $ref: ethernet-controller.yaml#
+
+  # eTSEC2 controller nodes have "queue group" subnodes and don't need a "reg"
+  # property.
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: fsl,etsec2
+    then:
+      patternProperties:
+        "^queue-group@[0-9a-f]+$":
+          type: object
+
+          properties:
+            reg:
+              maxItems: 1
+
+            interrupts:
+              items:
+                - description: Transmit interrupt
+                - description: Receive interrupt
+                - description: Error interrupt
+
+          required:
+            - reg
+            - interrupts
+
+          additionalProperties: false
+    else:
+      required:
+        - reg
+
+  # TSEC and eTSEC devices require three interrupts
+  - if:
+      properties:
+        model:
+          contains:
+            enum: [ TSEC, eTSEC ]
+    then:
+      properties:
+        interrupts:
+          items:
+            - description: Transmit interrupt
+            - description: Receive interrupt
+            - description: Error interrupt
+
+
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    ethernet@24000 {
+        device_type = "network";
+        model = "TSEC";
+        compatible = "gianfar";
+        reg = <0x24000 0x1000>;
+        local-mac-address = [ 00 00 00 00 00 00 ];
+        interrupts = <29 2>, <30 2>, <34 2>;
+        interrupt-parent = <&mpic>;
+        phy-handle = <&phy0>;
+    };
+
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    ethernet@24000 {
+        compatible = "gianfar";
+        reg = <0x24000 0x1000>;
+        ranges = <0x0 0x24000 0x1000>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        cell-index = <0>;
+        device_type = "network";
+        model = "eTSEC";
+        local-mac-address = [ 00 00 00 00 00 00 ];
+        interrupts = <32 IRQ_TYPE_LEVEL_LOW>,
+                     <33 IRQ_TYPE_LEVEL_LOW>,
+                     <34 IRQ_TYPE_LEVEL_LOW>;
+        interrupt-parent = <&ipic>;
+
+        mdio@520 {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            compatible = "fsl,gianfar-mdio";
+            reg = <0x520 0x20>;
+        };
+    };
+
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    bus {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        ethernet {
+            compatible = "fsl,etsec2";
+            ranges;
+            device_type = "network";
+            #address-cells = <2>;
+            #size-cells = <2>;
+            interrupt-parent = <&gic>;
+            model = "eTSEC";
+            fsl,magic-packet;
+            dma-coherent;
+
+            queue-group@2d10000 {
+                reg = <0x0 0x2d10000 0x0 0x1000>;
+                interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+                             <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                             <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
+            };
+
+            queue-group@2d14000  {
+                reg = <0x0 0x2d14000 0x0 0x1000>;
+                interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
+                             <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                             <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>;
+            };
+        };
+    };
+
+...
index 9c9668c..b18bb4c 100644 (file)
@@ -1,88 +1,14 @@
 * MDIO IO device
 
-The MDIO is a bus to which the PHY devices are connected.  For each
-device that exists on this bus, a child node should be created.  See
-the definition of the PHY node in booting-without-of.txt for an example
-of how to define a PHY.
-
-Required properties:
-  - reg : Offset and length of the register set for the device, and optionally
-          the offset and length of the TBIPA register (TBI PHY address
-         register).  If TBIPA register is not specified, the driver will
-         attempt to infer it from the register set specified (your mileage may
-         vary).
-  - compatible : Should define the compatible device type for the
-    mdio. Currently supported strings/devices are:
-       - "fsl,gianfar-tbi"
-       - "fsl,gianfar-mdio"
-       - "fsl,etsec2-tbi"
-       - "fsl,etsec2-mdio"
-       - "fsl,ucc-mdio"
-       - "fsl,fman-mdio"
-    When device_type is "mdio", the following strings are also considered:
-       - "gianfar"
-       - "ucc_geth_phy"
-
-Example:
-
-       mdio@24520 {
-               reg = <24520 20>;
-               compatible = "fsl,gianfar-mdio";
-
-               ethernet-phy@0 {
-                       ......
-               };
-       };
+Refer to Documentation/devicetree/bindings/net/fsl,gianfar-mdio.yaml
 
 * TBI Internal MDIO bus
 
-As of this writing, every tsec is associated with an internal TBI PHY.
-This PHY is accessed through the local MDIO bus.  These buses are defined
-similarly to the mdio buses, except they are compatible with "fsl,gianfar-tbi".
-The TBI PHYs underneath them are similar to normal PHYs, but the reg property
-is considered instructive, rather than descriptive.  The reg property should
-be chosen so it doesn't interfere with other PHYs on the bus.
+Refer to Documentation/devicetree/bindings/net/fsl,gianfar-mdio.yaml
 
 * Gianfar-compatible ethernet nodes
 
-Properties:
-
-  - device_type : Should be "network"
-  - model : Model of the device.  Can be "TSEC", "eTSEC", or "FEC"
-  - compatible : Should be "gianfar"
-  - reg : Offset and length of the register set for the device
-  - interrupts : For FEC devices, the first interrupt is the device's
-    interrupt.  For TSEC and eTSEC devices, the first interrupt is
-    transmit, the second is receive, and the third is error.
-  - phy-handle : See ethernet.txt file in the same directory.
-  - fixed-link : See fixed-link.txt in the same directory.
-  - phy-connection-type : See ethernet.txt file in the same directory.
-    This property is only really needed if the connection is of type
-    "rgmii-id", as all other connection types are detected by hardware.
-  - fsl,magic-packet : If present, indicates that the hardware supports
-    waking up via magic packet.
-  - fsl,wake-on-filer : If present, indicates that the hardware supports
-    waking up by Filer General Purpose Interrupt (FGPI) asserted on the
-    Rx int line.  This is an advanced power management capability allowing
-    certain packet types (user) defined by filer rules to wake up the system.
-  - bd-stash : If present, indicates that the hardware supports stashing
-    buffer descriptors in the L2.
-  - rx-stash-len : Denotes the number of bytes of a received buffer to stash
-    in the L2.
-  - rx-stash-idx : Denotes the index of the first byte from the received
-    buffer to stash in the L2.
-
-Example:
-       ethernet@24000 {
-               device_type = "network";
-               model = "TSEC";
-               compatible = "gianfar";
-               reg = <0x24000 0x1000>;
-               local-mac-address = [ 00 E0 0C 00 73 00 ];
-               interrupts = <29 2 30 2 34 2>;
-               interrupt-parent = <&mpic>;
-               phy-handle = <&phy0>
-       };
+Refer to Documentation/devicetree/bindings/net/fsl,gianfar.yaml
 
 * Gianfar PTP clock nodes
 
index a1046e6..f1bd07a 100644 (file)
@@ -20,7 +20,7 @@ Example:
                reg = <0>;
                spi-max-frequency = <3000000>;
                spi-cpol;
-               reset-gpio = <&gpio1 1 GPIO_ACTIVE_HIGH>;
+               reset-gpio = <&gpio1 1 GPIO_ACTIVE_LOW>;
                irq-gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
                extclock-enable;
                extclock-freq = 16000000;
index 42a0bc9..62c1da3 100644 (file)
@@ -41,6 +41,12 @@ properties:
       - const: ptp_ref
       - const: tx_clk
 
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    const: macirq
+
 required:
   - compatible
   - clocks
index ed9d845..3aab21b 100644 (file)
@@ -64,6 +64,12 @@ properties:
       - const: rmii_internal
       - const: mac_cg
 
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    const: macirq
+
   power-domains:
     maxItems: 1
 
index 87bc441..e5db346 100644 (file)
@@ -56,6 +56,14 @@ properties:
         - tx
         - mem
 
+  interrupts:
+    maxItems: 2
+
+  interrupt-names:
+    items:
+      - const: macirq
+      - const: eth_wake_irq
+
   intf_mode:
     $ref: /schemas/types.yaml#/definitions/phandle-array
     items:
index 1a46d80..b4a7991 100644 (file)
@@ -210,70 +210,70 @@ additionalProperties: false
 
 examples:
   - |
-        #include <dt-bindings/interrupt-controller/arm-gic.h>
-        #include <dt-bindings/clock/qcom,rpmh.h>
-        #include <dt-bindings/interconnect/qcom,sdm845.h>
-
-        smp2p-mpss {
-                compatible = "qcom,smp2p";
-                interrupts = <GIC_SPI 576 IRQ_TYPE_EDGE_RISING>;
-                mboxes = <&apss_shared 6>;
-                qcom,smem = <94>, <432>;
-                qcom,local-pid = <0>;
-                qcom,remote-pid = <5>;
-
-                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>;
-                };
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/qcom,rpmh.h>
+    #include <dt-bindings/interconnect/qcom,sdm845.h>
+
+    smp2p-mpss {
+        compatible = "qcom,smp2p";
+        interrupts = <GIC_SPI 576 IRQ_TYPE_EDGE_RISING>;
+        mboxes = <&apss_shared 6>;
+        qcom,smem = <94>, <432>;
+        qcom,local-pid = <0>;
+        qcom,remote-pid = <5>;
+
+        ipa_smp2p_out: ipa-ap-to-modem {
+                qcom,entry-name = "ipa";
+                #qcom,smem-state-cells = <1>;
         };
 
-        ipa@1e40000 {
-                compatible = "qcom,sc7180-ipa";
-
-                qcom,gsi-loader = "self";
-                memory-region = <&ipa_fw_mem>;
-                firmware-name = "qcom/sc7180-trogdor/modem/modem.mbn";
-
-                iommus = <&apps_smmu 0x440 0x0>,
-                         <&apps_smmu 0x442 0x0>;
-                reg = <0x1e40000 0x7000>,
-                      <0x1e47000 0x2000>,
-                      <0x1e04000 0x2c000>;
-                reg-names = "ipa-reg",
-                            "ipa-shared",
-                            "gsi";
-
-                interrupts-extended = <&intc GIC_SPI 311 IRQ_TYPE_EDGE_RISING>,
-                                      <&intc GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>,
-                                      <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
-                                      <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>;
-                interrupt-names = "ipa",
-                                  "gsi",
-                                  "ipa-clock-query",
-                                  "ipa-setup-ready";
-
-                clocks = <&rpmhcc RPMH_IPA_CLK>;
-                clock-names = "core";
-
-                interconnects =
-                        <&aggre2_noc MASTER_IPA 0 &mc_virt SLAVE_EBI1 0>,
-                        <&aggre2_noc MASTER_IPA 0 &system_noc SLAVE_IMEM 0>,
-                        <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_IPA_CFG 0>;
-                interconnect-names = "memory",
-                                     "imem",
-                                     "config";
-
-                qcom,qmp = <&aoss_qmp>;
-
-                qcom,smem-states = <&ipa_smp2p_out 0>,
-                                   <&ipa_smp2p_out 1>;
-                qcom,smem-state-names = "ipa-clock-enabled-valid",
-                                        "ipa-clock-enabled";
+        ipa_smp2p_in: ipa-modem-to-ap {
+                qcom,entry-name = "ipa";
+                interrupt-controller;
+                #interrupt-cells = <2>;
         };
+    };
+
+    ipa@1e40000 {
+        compatible = "qcom,sc7180-ipa";
+
+        qcom,gsi-loader = "self";
+        memory-region = <&ipa_fw_mem>;
+        firmware-name = "qcom/sc7180-trogdor/modem/modem.mbn";
+
+        iommus = <&apps_smmu 0x440 0x0>,
+                 <&apps_smmu 0x442 0x0>;
+        reg = <0x1e40000 0x7000>,
+              <0x1e47000 0x2000>,
+              <0x1e04000 0x2c000>;
+        reg-names = "ipa-reg",
+                    "ipa-shared",
+                    "gsi";
+
+        interrupts-extended = <&intc GIC_SPI 311 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>,
+                              <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+                              <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>;
+        interrupt-names = "ipa",
+                          "gsi",
+                          "ipa-clock-query",
+                          "ipa-setup-ready";
+
+        clocks = <&rpmhcc RPMH_IPA_CLK>;
+        clock-names = "core";
+
+        interconnects =
+                <&aggre2_noc MASTER_IPA 0 &mc_virt SLAVE_EBI1 0>,
+                <&aggre2_noc MASTER_IPA 0 &system_noc SLAVE_IMEM 0>,
+                <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_IPA_CFG 0>;
+        interconnect-names = "memory",
+                             "imem",
+                             "config";
+
+        qcom,qmp = <&aoss_qmp>;
+
+        qcom,smem-states = <&ipa_smp2p_out 0>,
+                           <&ipa_smp2p_out 1>;
+        qcom,smem-state-names = "ipa-clock-enabled-valid",
+                                "ipa-clock-enabled";
+    };
diff --git a/Bindings/net/realtek,rtl9301-mdio.yaml b/Bindings/net/realtek,rtl9301-mdio.yaml
new file mode 100644 (file)
index 0000000..02e4e33
--- /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/net/realtek,rtl9301-mdio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Realtek RTL9300 MDIO Controller
+
+maintainers:
+  - Chris Packham <chris.packham@alliedtelesis.co.nz>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - realtek,rtl9302b-mdio
+              - realtek,rtl9302c-mdio
+              - realtek,rtl9303-mdio
+          - const: realtek,rtl9301-mdio
+      - const: realtek,rtl9301-mdio
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  reg:
+    maxItems: 1
+
+patternProperties:
+  '^mdio-bus@[0-3]$':
+    $ref: mdio.yaml#
+
+    properties:
+      reg:
+        maxItems: 1
+
+    required:
+      - reg
+
+    patternProperties:
+      '^ethernet-phy@[a-f0-9]+$':
+        type: object
+        $ref: ethernet-phy.yaml#
+        unevaluatedProperties: false
+
+    unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    mdio-controller@ca00 {
+      compatible = "realtek,rtl9301-mdio";
+      reg = <0xca00 0x200>;
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      mdio-bus@0 {
+        reg = <0>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        ethernet-phy@0 {
+          compatible = "ethernet-phy-ieee802.3-c45";
+          reg = <0>;
+        };
+      };
+
+      mdio-bus@1 {
+        reg = <1>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        ethernet-phy@0 {
+          compatible = "ethernet-phy-ieee802.3-c45";
+          reg = <0>;
+        };
+      };
+    };
similarity index 66%
rename from Bindings/mfd/realtek,rtl9301-switch.yaml
rename to Bindings/net/realtek,rtl9301-switch.yaml
index f053303..80eabc1 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/mfd/realtek,rtl9301-switch.yaml#
+$id: http://devicetree.org/schemas/net/realtek,rtl9301-switch.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Realtek Switch with Internal CPU
@@ -14,6 +14,8 @@ description:
   number of different peripherals are accessed through a common register block,
   represented here as a syscon node.
 
+$ref: ethernet-switch.yaml#/$defs/ethernet-ports
+
 properties:
   compatible:
     items:
@@ -28,12 +30,23 @@ properties:
   reg:
     maxItems: 1
 
+  interrupts:
+    maxItems: 2
+
+  interrupt-names:
+    items:
+      - const: switch
+      - const: nic
+
   '#address-cells':
     const: 1
 
   '#size-cells':
     const: 1
 
+  ethernet-ports:
+    type: object
+
 patternProperties:
   'reboot@[0-9a-f]+$':
     $ref: /schemas/power/reset/syscon-reboot.yaml#
@@ -41,9 +54,14 @@ patternProperties:
   'i2c@[0-9a-f]+$':
     $ref: /schemas/i2c/realtek,rtl9301-i2c.yaml#
 
+  'mdio-controller@[0-9a-f]+$':
+    $ref: realtek,rtl9301-mdio.yaml#
+
 required:
   - compatible
   - reg
+  - interrupts
+  - interrupt-names
 
 additionalProperties: false
 
@@ -52,6 +70,9 @@ examples:
     ethernet-switch@1b000000 {
       compatible = "realtek,rtl9301-switch", "syscon", "simple-mfd";
       reg = <0x1b000000 0x10000>;
+      interrupt-parent = <&intc>;
+      interrupts = <23>, <24>;
+      interrupt-names = "switch", "nic";
       #address-cells = <1>;
       #size-cells = <1>;
 
@@ -110,5 +131,45 @@ examples:
           };
         };
       };
+
+      mdio-controller@ca00 {
+        compatible = "realtek,rtl9301-mdio";
+        reg = <0xca00 0x200>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        mdio-bus@0 {
+          reg = <0>;
+          #address-cells = <1>;
+          #size-cells = <0>;
+
+          phy1: ethernet-phy@0 {
+            reg = <0>;
+          };
+        };
+        mdio-bus@1 {
+          reg = <1>;
+          #address-cells = <1>;
+          #size-cells = <0>;
+
+          phy2: ethernet-phy@0 {
+            reg = <0>;
+          };
+        };
+      };
+
+      ethernet-ports {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        port@0 {
+          reg = <0>;
+          phy-handle = <&phy1>;
+        };
+        port@1 {
+          reg = <1>;
+          phy-handle = <&phy2>;
+        };
+      };
     };
 
index 9630c84..4a706a4 100644 (file)
@@ -32,6 +32,10 @@ properties:
   shutdown-gpios:
     maxItems: 1
 
+  default-blocked:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description: configure rfkill state as blocked at boot
+
 required:
   - compatible
   - radio-type
@@ -48,4 +52,5 @@ examples:
         label = "rfkill-pcie-wlan";
         radio-type = "wlan";
         shutdown-gpios = <&gpio2 25 GPIO_ACTIVE_HIGH>;
+        default-blocked;
     };
index f8a5766..0ac7c4b 100644 (file)
@@ -24,6 +24,7 @@ select:
           - rockchip,rk3366-gmac
           - rockchip,rk3368-gmac
           - rockchip,rk3399-gmac
+          - rockchip,rk3528-gmac
           - rockchip,rk3568-gmac
           - rockchip,rk3576-gmac
           - rockchip,rk3588-gmac
@@ -32,9 +33,6 @@ select:
   required:
     - compatible
 
-allOf:
-  - $ref: snps,dwmac.yaml#
-
 properties:
   compatible:
     oneOf:
@@ -52,14 +50,25 @@ properties:
               - rockchip,rv1108-gmac
       - items:
           - enum:
+              - rockchip,rk3528-gmac
               - rockchip,rk3568-gmac
               - rockchip,rk3576-gmac
               - rockchip,rk3588-gmac
               - rockchip,rv1126-gmac
           - const: snps,dwmac-4.20a
 
+  interrupts:
+    minItems: 1
+    maxItems: 2
+
+  interrupt-names:
+    minItems: 1
+    items:
+      - const: macirq
+      - const: eth_wake_irq
+
   clocks:
-    minItems: 5
+    minItems: 4
     maxItems: 8
 
   clock-names:
@@ -114,6 +123,36 @@ required:
   - compatible
   - clocks
   - clock-names
+  - rockchip,grf
+
+allOf:
+  - $ref: snps,dwmac.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - rockchip,rk3576-gmac
+              - rockchip,rk3588-gmac
+    then:
+      required:
+        - rockchip,php-grf
+    else:
+      properties:
+        rockchip,php-grf: false
+
+  - if:
+      not:
+        properties:
+          compatible:
+            contains:
+              enum:
+                - rockchip,rk3528-gmac
+    then:
+      properties:
+        clocks:
+          minItems: 5
 
 unevaluatedProperties: false
 
index f86667c..42279ae 100644 (file)
@@ -11,6 +11,7 @@ maintainers:
 
 allOf:
   - $ref: ethernet-controller.yaml#
+  - $ref: /schemas/memory-controllers/mc-peripheral-props.yaml#
 
 properties:
   compatible:
@@ -89,10 +90,7 @@ required:
   - reg
   - interrupts
 
-# There are lots of bus-specific properties ("qcom,*", "samsung,*", "fsl,*",
-# "gpmc,*", ...) to be found, that actually depend on the compatible value of
-# the parent node.
-additionalProperties: true
+unevaluatedProperties: false
 
 examples:
   - |
index 91e75eb..78b3030 100644 (file)
@@ -32,6 +32,7 @@ select:
           - snps,dwmac-4.20a
           - snps,dwmac-5.10a
           - snps,dwmac-5.20
+          - snps,dwmac-5.30a
           - snps,dwxgmac
           - snps,dwxgmac-2.10
 
@@ -98,10 +99,13 @@ properties:
         - snps,dwmac-4.20a
         - snps,dwmac-5.10a
         - snps,dwmac-5.20
+        - snps,dwmac-5.30a
         - snps,dwxgmac
         - snps,dwxgmac-2.10
+        - sophgo,sg2044-dwmac
         - starfive,jh7100-dwmac
         - starfive,jh7110-dwmac
+        - tesla,fsd-ethqos
         - thead,th1520-gmac
 
   reg:
@@ -126,7 +130,7 @@ properties:
 
   clocks:
     minItems: 1
-    maxItems: 8
+    maxItems: 10
     additionalItems: true
     items:
       - description: GMAC main clock
@@ -138,7 +142,7 @@ properties:
 
   clock-names:
     minItems: 1
-    maxItems: 8
+    maxItems: 10
     additionalItems: true
     contains:
       enum:
@@ -490,6 +494,7 @@ properties:
 
   snps,en-tx-lpi-clockgating:
     $ref: /schemas/types.yaml#/definitions/flag
+    deprecated: true
     description:
       Enable gating of the MAC TX clock during TX low-power mode
 
@@ -631,6 +636,7 @@ allOf:
                 - snps,dwmac-4.20a
                 - snps,dwmac-5.10a
                 - snps,dwmac-5.20
+                - snps,dwmac-5.30a
                 - snps,dwxgmac
                 - snps,dwxgmac-2.10
                 - st,spear600-gmac
diff --git a/Bindings/net/sophgo,sg2044-dwmac.yaml b/Bindings/net/sophgo,sg2044-dwmac.yaml
new file mode 100644 (file)
index 0000000..4dd2dc9
--- /dev/null
@@ -0,0 +1,126 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/sophgo,sg2044-dwmac.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sophgo SG2044 DWMAC glue layer
+
+maintainers:
+  - Inochi Amaoto <inochiama@gmail.com>
+
+select:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - sophgo,sg2044-dwmac
+  required:
+    - compatible
+
+properties:
+  compatible:
+    items:
+      - const: sophgo,sg2044-dwmac
+      - const: snps,dwmac-5.30a
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: GMAC main clock
+      - description: PTP clock
+      - description: TX clock
+
+  clock-names:
+    items:
+      - const: stmmaceth
+      - const: ptp_ref
+      - const: tx
+
+  dma-noncoherent: true
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  reset-names:
+    const: stmmaceth
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+  - interrupt-names
+  - resets
+  - reset-names
+
+allOf:
+  - $ref: snps,dwmac.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    ethernet@30006000 {
+      compatible = "sophgo,sg2044-dwmac", "snps,dwmac-5.30a";
+      reg = <0x30006000 0x4000>;
+      clocks = <&clk 151>, <&clk 152>, <&clk 154>;
+      clock-names = "stmmaceth", "ptp_ref", "tx";
+      interrupt-parent = <&intc>;
+      interrupts = <296 IRQ_TYPE_LEVEL_HIGH>;
+      interrupt-names = "macirq";
+      resets = <&rst 30>;
+      reset-names = "stmmaceth";
+      snps,multicast-filter-bins = <0>;
+      snps,perfect-filter-entries = <1>;
+      snps,aal;
+      snps,tso;
+      snps,txpbl = <32>;
+      snps,rxpbl = <32>;
+      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>;
+        snps,rx-sched-wsp;
+        queue0 {};
+        queue1 {};
+        queue2 {};
+        queue3 {};
+        queue4 {};
+        queue5 {};
+        queue6 {};
+        queue7 {};
+      };
+
+      gmac0_mtl_tx_setup: tx-queues-config {
+        snps,tx-queues-to-use = <8>;
+        queue0 {};
+        queue1 {};
+        queue2 {};
+        queue3 {};
+        queue4 {};
+        queue5 {};
+        queue6 {};
+        queue7 {};
+      };
+
+      gmac0_stmmac_axi_setup: stmmac-axi-config {
+        snps,blen = <16 8 4 0 0 0 0>;
+        snps,wr_osr_lmt = <1>;
+        snps,rd_osr_lmt = <2>;
+      };
+    };
index 85cea99..9872549 100644 (file)
@@ -54,6 +54,16 @@ properties:
     items:
       - const: stmmaceth
 
+  interrupts:
+    minItems: 1
+    maxItems: 2
+
+  interrupt-names:
+    minItems: 1
+    items:
+      - const: macirq
+      - const: eth_wake_irq
+
   clocks:
     minItems: 3
     items:
diff --git a/Bindings/net/tesla,fsd-ethqos.yaml b/Bindings/net/tesla,fsd-ethqos.yaml
new file mode 100644 (file)
index 0000000..dd7481b
--- /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/net/tesla,fsd-ethqos.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: FSD Ethernet Quality of Service
+
+maintainers:
+  - Swathi K S <swathi.ks@samsung.com>
+
+description:
+  Tesla ethernet devices based on dwmmac support Gigabit ethernet.
+
+allOf:
+  - $ref: snps,dwmac.yaml#
+
+properties:
+  compatible:
+    const: tesla,fsd-ethqos
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    items:
+      - const: macirq
+
+  clocks:
+    minItems: 5
+    items:
+      - description: PTP clock
+      - description: Master bus clock
+      - description: Slave bus clock
+      - description: MAC TX clock
+      - description: MAC RX clock
+      - description: Master2 bus clock
+      - description: Slave2 bus clock
+      - description: RX MUX clock
+      - description: PHY RX clock
+      - description: PERIC RGMII clock
+
+  clock-names:
+    minItems: 5
+    items:
+      - const: ptp_ref
+      - const: master_bus
+      - const: slave_bus
+      - const: tx
+      - const: rx
+      - const: master2_bus
+      - const: slave2_bus
+      - const: eqos_rxclk_mux
+      - const: eqos_phyrxclk
+      - const: dout_peric_rgmii_clk
+
+  iommus:
+    maxItems: 1
+
+  phy-mode:
+    enum:
+      - rgmii
+      - rgmii-id
+      - rgmii-rxid
+      - rgmii-txid
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - iommus
+  - phy-mode
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/fsd-clk.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+        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>;
+            iommus = <&smmu_peric 0x0 0x1>;
+            phy-mode = "rgmii-id";
+        };
+    };
+
+...
index 052f636..f0f32e1 100644 (file)
@@ -42,6 +42,12 @@ properties:
       - const: stmmaceth
       - const: phy_ref_clk
 
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    const: macirq
+
 required:
   - compatible
   - reg
index aace072..f2440d3 100644 (file)
@@ -92,20 +92,41 @@ properties:
 
   ieee80211-freq-limit: true
 
+  qcom,calibration-data:
+    $ref: /schemas/types.yaml#/definitions/uint8-array
+    description:
+      Calibration data + board-specific data as a byte array. The length
+      can vary between hardware versions.
+
   qcom,ath10k-calibration-data:
     $ref: /schemas/types.yaml#/definitions/uint8-array
+    deprecated: true
     description:
       Calibration data + board-specific data as a byte array. The length
       can vary between hardware versions.
 
+  qcom,calibration-variant:
+    $ref: /schemas/types.yaml#/definitions/string
+    description:
+      Unique variant identifier of the calibration data in board-2.bin
+      for designs with colliding bus and device specific ids
+
   qcom,ath10k-calibration-variant:
     $ref: /schemas/types.yaml#/definitions/string
+    deprecated: true
     description:
       Unique variant identifier of the calibration data in board-2.bin
       for designs with colliding bus and device specific ids
 
+  qcom,pre-calibration-data:
+    $ref: /schemas/types.yaml#/definitions/uint8-array
+    description:
+      Pre-calibration data as a byte array. The length can vary between
+      hardware versions.
+
   qcom,ath10k-pre-calibration-data:
     $ref: /schemas/types.yaml#/definitions/uint8-array
+    deprecated: true
     description:
       Pre-calibration data as a byte array. The length can vary between
       hardware versions.
index a4425cf..653b319 100644 (file)
@@ -22,8 +22,15 @@ properties:
   reg:
     maxItems: 1
 
+  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,ath11k-calibration-variant:
     $ref: /schemas/types.yaml#/definitions/string
+    deprecated: true
     description: |
       string to uniquely identify variant of the calibration data for designs
       with colliding bus and device ids
@@ -127,7 +134,7 @@ examples:
                 vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
                 vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
 
-                qcom,ath11k-calibration-variant = "LE_X13S";
+                qcom,calibration-variant = "LE_X13S";
             };
         };
     };
index a69ffb7..c089677 100644 (file)
@@ -41,8 +41,15 @@ properties:
         * reg
         * reg-names
 
+  qcom,calibration-variant:
+    $ref: /schemas/types.yaml#/definitions/string
+    description:
+      string to uniquely identify variant of the calibration data in the
+      board-2.bin for designs with colliding bus and device specific ids
+
   qcom,ath11k-calibration-variant:
     $ref: /schemas/types.yaml#/definitions/string
+    deprecated: true
     description:
       string to uniquely identify variant of the calibration data in the
       board-2.bin for designs with colliding bus and device specific ids
index 318f305..5899601 100644 (file)
@@ -52,8 +52,15 @@ properties:
   reg:
     maxItems: 1
 
+  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,ath12k-calibration-variant:
     $ref: /schemas/types.yaml#/definitions/string
+    deprecated: true
     description:
       String to uniquely identify variant of the calibration data for designs
       with colliding bus and device ids
@@ -103,7 +110,7 @@ examples:
                 compatible = "pci17cb,1109";
                 reg = <0x0 0x0 0x0 0x0 0x0>;
 
-                qcom,ath12k-calibration-variant = "RDP433_1";
+                qcom,calibration-variant = "RDP433_1";
 
                 ports {
                     #address-cells = <1>;
@@ -139,7 +146,7 @@ examples:
                 compatible = "pci17cb,1109";
                 reg = <0x0 0x0 0x0 0x0 0x0>;
 
-                qcom,ath12k-calibration-variant = "RDP433_2";
+                qcom,calibration-variant = "RDP433_2";
                 qcom,wsi-controller;
 
                 ports {
@@ -176,7 +183,7 @@ examples:
                 compatible = "pci17cb,1109";
                 reg = <0x0 0x0 0x0 0x0 0x0>;
 
-                qcom,ath12k-calibration-variant = "RDP433_3";
+                qcom,calibration-variant = "RDP433_3";
 
                 ports {
                     #address-cells = <1>;
index 8b38262..38e3ad5 100644 (file)
@@ -27,7 +27,7 @@ properties:
     $ref: /schemas/types.yaml#/definitions/uint32-array
     items:
       - minimum: 0
-        maximum: 7
+        maximum: 31
         description:
           Offset in bit within the address range specified by reg.
       - minimum: 1
index 39c2092..3f6dc6a 100644 (file)
@@ -19,6 +19,7 @@ properties:
       - enum:
           - qcom,apq8064-qfprom
           - qcom,apq8084-qfprom
+          - qcom,ipq5018-qfprom
           - qcom,ipq5332-qfprom
           - qcom,ipq5424-qfprom
           - qcom,ipq6018-qfprom
@@ -28,6 +29,8 @@ properties:
           - qcom,msm8226-qfprom
           - qcom,msm8916-qfprom
           - qcom,msm8917-qfprom
+          - qcom,msm8937-qfprom
+          - qcom,msm8960-qfprom
           - qcom,msm8974-qfprom
           - qcom,msm8976-qfprom
           - qcom,msm8996-qfprom
@@ -51,6 +54,7 @@ properties:
           - qcom,sm8450-qfprom
           - qcom,sm8550-qfprom
           - qcom,sm8650-qfprom
+          - qcom,x1e80100-qfprom
       - const: qcom,qfprom
 
   reg:
index a44d44b..dc89020 100644 (file)
@@ -14,6 +14,7 @@ properties:
     enum:
       - rockchip,px30-otp
       - rockchip,rk3308-otp
+      - rockchip,rk3576-otp
       - rockchip,rk3588-otp
 
   reg:
@@ -62,12 +63,34 @@ allOf:
       properties:
         clocks:
           maxItems: 3
+        clock-names:
+          maxItems: 3
         resets:
           maxItems: 1
         reset-names:
           items:
             - const: phy
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - rockchip,rk3576-otp
+    then:
+      properties:
+        clocks:
+          maxItems: 3
+        clock-names:
+          maxItems: 3
+        resets:
+          minItems: 2
+          maxItems: 2
+        reset-names:
+          items:
+            - const: otp
+            - const: apb
+
   - if:
       properties:
         compatible:
@@ -78,6 +101,8 @@ allOf:
       properties:
         clocks:
           minItems: 4
+        clock-names:
+          minItems: 4
         resets:
           minItems: 3
         reset-names:
index 52533fc..5d3f48a 100644 (file)
@@ -12,9 +12,19 @@ maintainers:
 
 properties:
   compatible:
+    description: Each family of socfpga has its own implementation of the
+      PCI controller. The altr,pcie-root-port-1.0 is used for the Cyclone5
+      family of chips. The Stratix10 family of chips is supported by the
+      altr,pcie-root-port-2.0. The Agilex family of chips has three,
+      non-register compatible, variants of PCIe Hard IP referred to as the
+      F-Tile, P-Tile, and R-Tile, depending on the specific chip instance.
+
     enum:
       - altr,pcie-root-port-1.0
       - altr,pcie-root-port-2.0
+      - altr,pcie-root-port-3.0-f-tile
+      - altr,pcie-root-port-3.0-p-tile
+      - altr,pcie-root-port-3.0-r-tile
 
   reg:
     items:
diff --git a/Bindings/pci/amd,versal2-mdb-host.yaml b/Bindings/pci/amd,versal2-mdb-host.yaml
new file mode 100644 (file)
index 0000000..43dc258
--- /dev/null
@@ -0,0 +1,121 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pci/amd,versal2-mdb-host.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: AMD Versal2 MDB(Multimedia DMA Bridge) Host Controller
+
+maintainers:
+  - Thippeswamy Havalige <thippeswamy.havalige@amd.com>
+
+allOf:
+  - $ref: /schemas/pci/pci-host-bridge.yaml#
+  - $ref: /schemas/pci/snps,dw-pcie.yaml#
+
+properties:
+  compatible:
+    const: amd,versal2-mdb-host
+
+  reg:
+    items:
+      - description: MDB System Level Control and Status Register (SLCR) Base
+      - description: configuration region
+      - description: data bus interface
+      - description: address translation unit register
+
+  reg-names:
+    items:
+      - const: slcr
+      - const: config
+      - const: dbi
+      - const: atu
+
+  ranges:
+    maxItems: 2
+
+  msi-map:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-map-mask:
+    items:
+      - const: 0
+      - const: 0
+      - const: 0
+      - const: 7
+
+  interrupt-map:
+    maxItems: 4
+
+  "#interrupt-cells":
+    const: 1
+
+  interrupt-controller:
+    description: identifies the node as an interrupt controller
+    type: object
+    additionalProperties: false
+    properties:
+      interrupt-controller: true
+
+      "#address-cells":
+        const: 0
+
+      "#interrupt-cells":
+        const: 1
+
+    required:
+      - interrupt-controller
+      - "#address-cells"
+      - "#interrupt-cells"
+
+required:
+  - reg
+  - reg-names
+  - interrupts
+  - interrupt-map
+  - interrupt-map-mask
+  - msi-map
+  - "#interrupt-cells"
+  - interrupt-controller
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+        pcie@ed931000 {
+            compatible = "amd,versal2-mdb-host";
+            reg = <0x0 0xed931000 0x0 0x2000>,
+                  <0x1000 0x100000 0x0 0xff00000>,
+                  <0x1000 0x0 0x0 0x1000>,
+                  <0x0 0xed860000 0x0 0x2000>;
+            reg-names = "slcr", "config", "dbi", "atu";
+            ranges = <0x2000000 0x00 0xa0000000 0x00 0xa0000000 0x00 0x10000000>,
+                     <0x43000000 0x1100 0x00 0x1100 0x00 0x00 0x1000000>;
+            interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
+            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>;
+            msi-map = <0x0 &gic_its 0x00 0x10000>;
+            #address-cells = <3>;
+            #size-cells = <2>;
+            #interrupt-cells = <1>;
+            device_type = "pci";
+            pcie_intc_0: interrupt-controller {
+                #address-cells = <0>;
+                #interrupt-cells = <1>;
+                interrupt-controller;
+           };
+        };
+    };
index 2ad1652..29f0e1e 100644 (file)
@@ -14,6 +14,7 @@ properties:
     items:
       - enum:
           - brcm,bcm2711-pcie # The Raspberry Pi 4
+          - brcm,bcm2712-pcie # Raspberry Pi 5
           - brcm,bcm4908-pcie
           - brcm,bcm7211-pcie # Broadcom STB version of RPi4
           - brcm,bcm7216-pcie # Broadcom 7216 Arm
@@ -101,7 +102,10 @@ properties:
 
   reset-names:
     minItems: 1
-    maxItems: 3
+    items:
+      - enum: [perst, rescal]
+      - const: bridge
+      - const: swinit
 
 required:
   - compatible
index 4c76cd3..ca5f297 100644 (file)
@@ -47,12 +47,16 @@ properties:
     maxItems: 5
 
   interrupts:
+    minItems: 1
     items:
       - description: builtin MSI controller.
+      - description: builtin DMA controller.
 
   interrupt-names:
+    minItems: 1
     items:
       - const: msi
+      - const: dma
 
   reset-gpio:
     description: Should specify the GPIO for controlling the PCI bus device
index 399efa7..d78a6d1 100644 (file)
@@ -94,9 +94,6 @@ examples:
         reg-names = "regs", "addr_space";
         interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>; /* PME interrupt */
         interrupt-names = "pme";
-        num-ib-windows = <6>;
-        num-ob-windows = <8>;
-        status = "disabled";
       };
     };
 ...
diff --git a/Bindings/pci/fsl,mpc8xxx-pci.yaml b/Bindings/pci/fsl,mpc8xxx-pci.yaml
new file mode 100644 (file)
index 0000000..28759ab
--- /dev/null
@@ -0,0 +1,113 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+
+$id: http://devicetree.org/schemas/pci/fsl,mpc8xxx-pci.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale MPC83xx PCI/PCI-X/PCIe controllers
+
+description:
+  Binding for the PCI/PCI-X/PCIe host bridges on MPC8xxx SoCs
+
+maintainers:
+  - J. Neuschäfer <j.neuschaefer@gmx.net>
+
+allOf:
+  - $ref: /schemas/pci/pci-host-bridge.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - fsl,mpc8314-pcie
+          - fsl,mpc8349-pci
+          - fsl,mpc8540-pci
+          - fsl,mpc8548-pcie
+          - fsl,mpc8641-pcie
+      - items:
+          - enum:
+              - fsl,mpc8308-pcie
+              - fsl,mpc8315-pcie
+              - fsl,mpc8377-pcie
+              - fsl,mpc8378-pcie
+          - const: fsl,mpc8314-pcie
+      - items:
+          - const: fsl,mpc8360-pci
+          - const: fsl,mpc8349-pci
+      - items:
+          - const: fsl,mpc8540-pcix
+          - const: fsl,mpc8540-pci
+
+  reg:
+    minItems: 1
+    items:
+      - description: internal registers
+      - description: config space access registers
+
+  clock-frequency: true
+
+  interrupts:
+    items:
+      - description: Consolidated PCI interrupt
+
+  fsl,pci-agent-force-enum:
+    type: boolean
+    description:
+      Typically any Freescale PCI-X bridge hardware strapped into Agent mode is
+      prevented from enumerating the bus. The PrPMC form-factor requires all
+      mezzanines to be PCI-X Agents, but one per system may still enumerate the
+      bus.
+
+      This property allows a PCI-X bridge to be used for bus enumeration
+      despite being strapped into Agent mode.
+
+required:
+  - reg
+  - compatible
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    pcie@e0009000 {
+        compatible = "fsl,mpc8315-pcie", "fsl,mpc8314-pcie";
+        reg = <0xe0009000 0x00001000>;
+        ranges = <0x02000000 0 0xa0000000 0xa0000000 0 0x10000000
+                  0x01000000 0 0x00000000 0xb1000000 0 0x00800000>;
+        #address-cells = <3>;
+        #size-cells = <2>;
+        #interrupt-cells = <1>;
+        device_type = "pci";
+        bus-range = <0 255>;
+        interrupt-map-mask = <0xf800 0 0 7>;
+        interrupt-map = <0 0 0 1 &ipic 1 IRQ_TYPE_LEVEL_LOW
+                         0 0 0 2 &ipic 1 IRQ_TYPE_LEVEL_LOW
+                         0 0 0 3 &ipic 1 IRQ_TYPE_LEVEL_LOW
+                         0 0 0 4 &ipic 1 IRQ_TYPE_LEVEL_LOW>;
+        clock-frequency = <0>;
+    };
+
+  - |
+    pci@ef008000 {
+        compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci";
+        reg = <0xef008000 0x1000>;
+        ranges = <0x02000000 0 0x80000000 0x80000000 0 0x20000000
+                  0x01000000 0 0x00000000 0xd0000000 0 0x01000000>;
+        #interrupt-cells = <1>;
+        #size-cells = <2>;
+        #address-cells = <3>;
+        device_type = "pci";
+        clock-frequency = <33333333>;
+        interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
+        interrupt-map = </* IDSEL */
+                         0xe000 0 0 1 &mpic 2 1
+                         0xe000 0 0 2 &mpic 3 1>;
+        interrupts-extended = <&mpic 24 2>;
+        bus-range = <0 0>;
+        fsl,pci-agent-force-enum;
+    };
+
+...
diff --git a/Bindings/pci/fsl,pci.txt b/Bindings/pci/fsl,pci.txt
deleted file mode 100644 (file)
index d8ac4a7..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-* Bus Enumeration by Freescale PCI-X Agent
-
-Typically any Freescale PCI-X bridge hardware strapped into Agent mode
-is prevented from enumerating the bus. The PrPMC form-factor requires
-all mezzanines to be PCI-X Agents, but one per system may still
-enumerate the bus.
-
-The property defined below will allow a PCI-X bridge to be used for bus
-enumeration despite being strapped into Agent mode.
-
-Required properties:
-- fsl,pci-agent-force-enum : There is no value associated with this
-  property. The property itself is treated as a boolean.
-
-Example:
-
-       /* PCI-X bridge known to be PrPMC Monarch */
-       pci0: pci@ef008000 {
-               fsl,pci-agent-force-enum;
-               #interrupt-cells = <1>;
-               #size-cells = <2>;
-               #address-cells = <3>;
-               compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci";
-               device_type = "pci";
-               ...
-               ...
-       };
index f05aab2..162406e 100644 (file)
@@ -109,6 +109,17 @@ properties:
   power-domains:
     maxItems: 1
 
+  mediatek,pbus-csr:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    items:
+      - items:
+          - description: phandle to pbus-csr syscon
+          - description: offset of pbus-csr base address register
+          - description: offset of pbus-csr base address mask register
+    description:
+      Phandle with two arguments to the syscon node used to detect if
+      a given address is accessible on PCIe controller.
+
   '#interrupt-cells':
     const: 1
 
@@ -168,6 +179,8 @@ allOf:
           minItems: 1
           maxItems: 2
 
+        mediatek,pbus-csr: false
+
   - if:
       properties:
         compatible:
@@ -197,6 +210,8 @@ allOf:
           minItems: 1
           maxItems: 2
 
+        mediatek,pbus-csr: false
+
   - if:
       properties:
         compatible:
@@ -224,6 +239,8 @@ allOf:
           minItems: 1
           maxItems: 2
 
+        mediatek,pbus-csr: false
+
   - if:
       properties:
         compatible:
diff --git a/Bindings/pci/pci-ep-bus.yaml b/Bindings/pci/pci-ep-bus.yaml
new file mode 100644 (file)
index 0000000..a2cd790
--- /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/pci/pci-ep-bus.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Common Properties for PCI MFD EP with Peripherals Addressable from BARs
+
+maintainers:
+  - A. della Porta  <andrea.porta@suse.com>
+
+description:
+  Define a generic node representing a PCI endpoint which contains several sub-
+  peripherals. The peripherals can be accessed through one or more BARs.
+  This common schema is intended to be referenced from device tree bindings and
+  does not represent a device tree binding by itself.
+
+properties:
+  '#address-cells':
+    const: 3
+
+  '#size-cells':
+    const: 2
+
+  ranges:
+    minItems: 1
+    maxItems: 6
+    items:
+      maxItems: 8
+      additionalItems: true
+      items:
+        - maximum: 5  # The BAR number
+        - const: 0
+        - const: 0
+
+patternProperties:
+  '^pci-ep-bus@[0-5]$':
+    type: object
+    description:
+      One node for each BAR used by peripherals contained in the PCI endpoint.
+      Each node represents a bus on which peripherals are connected.
+      This allows for some segmentation, e.g., one peripheral is accessible
+      through BAR0 and another through BAR1, and you don't want the two
+      peripherals to be able to act on the other BAR. Alternatively, when
+      different peripherals need to share BARs, you can define only one node
+      and use a 'ranges' property to map all the used BARs.
+
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: simple-bus
+
+    required:
+      - compatible
+
+additionalProperties: true
+...
index 1226ee5..ac34142 100644 (file)
@@ -14,6 +14,7 @@ properties:
     oneOf:
       - enum:
           - qcom,sa8775p-pcie-ep
+          - qcom,sar2130p-pcie-ep
           - qcom,sdx55-pcie-ep
           - qcom,sm8450-pcie-ep
       - items:
@@ -44,11 +45,11 @@ properties:
 
   clocks:
     minItems: 5
-    maxItems: 8
+    maxItems: 9
 
   clock-names:
     minItems: 5
-    maxItems: 8
+    maxItems: 9
 
   qcom,perst-regs:
     description: Reference to a syscon representing TCSR followed by the two
@@ -75,6 +76,9 @@ properties:
       - const: doorbell
       - const: dma
 
+  iommus:
+    maxItems: 1
+
   reset-gpios:
     description: GPIO used as PERST# input signal
     maxItems: 1
@@ -91,6 +95,8 @@ properties:
       - const: pcie-mem
       - const: cpu-pcie
 
+  dma-coherent: true
+
   resets:
     maxItems: 1
 
@@ -126,6 +132,38 @@ required:
 
 allOf:
   - $ref: pci-ep.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,sar2130p-pcie-ep
+    then:
+      properties:
+        clocks:
+          items:
+            - description: PCIe Auxiliary clock
+            - description: PCIe CFG AHB clock
+            - description: PCIe Master AXI clock
+            - description: PCIe Slave AXI clock
+            - description: PCIe Slave Q2A AXI clock
+            - description: PCIe DDRSS SF TBU clock
+            - description: PCIe AGGRE NOC AXI clock
+            - description: PCIe CFG NOC AXI clock
+            - description: PCIe QMIP AHB clock
+        clock-names:
+          items:
+            - const: aux
+            - const: cfg
+            - const: bus_master
+            - const: bus_slave
+            - const: slave_q2a
+            - const: ddrss_sf_tbu
+            - const: aggre_noc_axi
+            - const: cnoc_sf_axi
+            - const: qmip_pcie_ahb
+
   - if:
       properties:
         compatible:
@@ -135,9 +173,43 @@ allOf:
     then:
       properties:
         reg:
+          minItems: 6
           maxItems: 6
         reg-names:
+          minItems: 6
           maxItems: 6
+        interrupts:
+          minItems: 2
+          maxItems: 2
+        interrupt-names:
+          minItems: 2
+          maxItems: 2
+        iommus: false
+    else:
+      properties:
+        reg:
+          minItems: 7
+          maxItems: 7
+        reg-names:
+          minItems: 7
+          maxItems: 7
+        interrupts:
+          minItems: 3
+          maxItems: 3
+        interrupt-names:
+          minItems: 3
+          maxItems: 3
+      required:
+        - iommus
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,sdx55-pcie-ep
+    then:
+      properties:
         clocks:
           items:
             - description: PCIe Auxiliary clock
@@ -156,10 +228,6 @@ allOf:
             - const: slave_q2a
             - const: sleep
             - const: ref
-        interrupts:
-          maxItems: 2
-        interrupt-names:
-          maxItems: 2
 
   - if:
       properties:
@@ -169,10 +237,6 @@ allOf:
               - qcom,sm8450-pcie-ep
     then:
       properties:
-        reg:
-          maxItems: 6
-        reg-names:
-          maxItems: 6
         clocks:
           items:
             - description: PCIe Auxiliary clock
@@ -193,10 +257,6 @@ allOf:
             - const: ref
             - const: ddrss_sf_tbu
             - const: aggre_noc_axi
-        interrupts:
-          maxItems: 2
-        interrupt-names:
-          maxItems: 2
 
   - if:
       properties:
@@ -206,12 +266,6 @@ allOf:
               - qcom,sa8775p-pcie-ep
     then:
       properties:
-        reg:
-          minItems: 7
-          maxItems: 7
-        reg-names:
-          minItems: 7
-          maxItems: 7
         clocks:
           items:
             - description: PCIe Auxiliary clock
@@ -226,12 +280,6 @@ allOf:
             - const: bus_master
             - const: bus_slave
             - const: slave_q2a
-        interrupts:
-          minItems: 3
-          maxItems: 3
-        interrupt-names:
-          minItems: 3
-          maxItems: 3
 
 unevaluatedProperties: false
 
index 7235d65..8f62893 100644 (file)
@@ -33,6 +33,7 @@ properties:
           - qcom,pcie-sdx55
       - items:
           - enum:
+              - qcom,pcie-ipq5332
               - qcom,pcie-ipq5424
           - const: qcom,pcie-ipq9574
       - items:
@@ -49,11 +50,11 @@ properties:
 
   interrupts:
     minItems: 1
-    maxItems: 8
+    maxItems: 9
 
   interrupt-names:
     minItems: 1
-    maxItems: 8
+    maxItems: 9
 
   iommu-map:
     minItems: 1
@@ -443,6 +444,7 @@ allOf:
         interrupts:
           minItems: 8
         interrupt-names:
+          minItems: 8
           items:
             - const: msi0
             - const: msi1
@@ -452,6 +454,7 @@ allOf:
             - const: msi5
             - const: msi6
             - const: msi7
+            - const: global
 
   - if:
       properties:
@@ -599,6 +602,7 @@ allOf:
         - properties:
             interrupts:
               minItems: 8
+              maxItems: 8
             interrupt-names:
               items:
                 - const: msi0
index 205326f..1117a86 100644 (file)
@@ -113,6 +113,8 @@ properties:
               enum: [ smu, mpu ]
             - description: Tegra234 aperture
               enum: [ ecam ]
+            - description: AMD MDB PCIe SLCR region
+              const: slcr
     allOf:
       - contains:
           const: dbi
index b63a759..d674a24 100644 (file)
@@ -18,6 +18,7 @@ properties:
       - xlnx,versal-cpm-host-1.00
       - xlnx,versal-cpm5-host
       - xlnx,versal-cpm5-host1
+      - xlnx,versal-cpm5nc-host
 
   reg:
     items:
index 2120912..580c329 100644 (file)
@@ -20,7 +20,9 @@ properties:
           - allwinner,sun20i-d1-usb-phy
           - allwinner,sun50i-a64-usb-phy
       - items:
-          - const: allwinner,sun50i-a100-usb-phy
+          - enum:
+              - allwinner,sun50i-a100-usb-phy
+              - allwinner,sun55i-a523-usb-phy
           - const: allwinner,sun20i-d1-usb-phy
 
   reg:
index 1b3de66..888e6b2 100644 (file)
@@ -12,6 +12,7 @@ maintainers:
 properties:
   compatible:
     enum:
+      - rockchip,rk3562-naneng-combphy
       - rockchip,rk3568-naneng-combphy
       - rockchip,rk3576-naneng-combphy
       - rockchip,rk3588-naneng-combphy
diff --git a/Bindings/phy/qcom,ipq5332-uniphy-pcie-phy.yaml b/Bindings/phy/qcom,ipq5332-uniphy-pcie-phy.yaml
new file mode 100644 (file)
index 0000000..e39168d
--- /dev/null
@@ -0,0 +1,76 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/qcom,ipq5332-uniphy-pcie-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm UNIPHY PCIe 28LP PHY
+
+maintainers:
+  - Nitheesh Sekar <quic_nsekar@quicinc.com>
+  - Varadarajan Narayanan <quic_varada@quicinc.com>
+
+description:
+  PCIe and USB combo PHY found in Qualcomm IPQ5332 SoC
+
+properties:
+  compatible:
+    enum:
+      - qcom,ipq5332-uniphy-pcie-phy
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: pcie pipe clock
+      - description: pcie ahb clock
+
+  resets:
+    items:
+      - description: phy reset
+      - description: ahb reset
+      - description: cfg reset
+
+  "#phy-cells":
+    const: 0
+
+  "#clock-cells":
+    const: 0
+
+  num-lanes:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [1, 2]
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - resets
+  - "#phy-cells"
+  - "#clock-cells"
+  - num-lanes
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,ipq5332-gcc.h>
+
+    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>;
+    };
index 8939164..2c6c929 100644 (file)
@@ -17,6 +17,7 @@ properties:
   compatible:
     enum:
       - qcom,qcs615-qmp-gen3x1-pcie-phy
+      - qcom,qcs8300-qmp-gen4x2-pcie-phy
       - qcom,sa8775p-qmp-gen4x2-pcie-phy
       - qcom,sa8775p-qmp-gen4x4-pcie-phy
       - qcom,sar2130p-qmp-gen3x2-pcie-phy
@@ -45,6 +46,7 @@ properties:
       - qcom,x1e80100-qmp-gen4x2-pcie-phy
       - qcom,x1e80100-qmp-gen4x4-pcie-phy
       - qcom,x1e80100-qmp-gen4x8-pcie-phy
+      - qcom,x1p42100-qmp-gen4x4-pcie-phy
 
   reg:
     minItems: 1
@@ -124,6 +126,7 @@ allOf:
             enum:
               - qcom,sc8280xp-qmp-gen3x4-pcie-phy
               - qcom,x1e80100-qmp-gen4x4-pcie-phy
+              - qcom,x1p42100-qmp-gen4x4-pcie-phy
     then:
       properties:
         reg:
@@ -180,6 +183,7 @@ allOf:
               - qcom,x1e80100-qmp-gen4x2-pcie-phy
               - qcom,x1e80100-qmp-gen4x4-pcie-phy
               - qcom,x1e80100-qmp-gen4x8-pcie-phy
+              - qcom,x1p42100-qmp-gen4x4-pcie-phy
     then:
       properties:
         clocks:
@@ -192,6 +196,7 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,qcs8300-qmp-gen4x2-pcie-phy
               - qcom,sa8775p-qmp-gen4x2-pcie-phy
               - qcom,sa8775p-qmp-gen4x4-pcie-phy
     then:
@@ -217,12 +222,6 @@ allOf:
           minItems: 2
         reset-names:
           minItems: 2
-    else:
-      properties:
-        resets:
-          maxItems: 1
-        reset-names:
-          maxItems: 1
 
   - if:
       properties:
index 72bed29..a58370a 100644 (file)
@@ -44,6 +44,7 @@ properties:
           - qcom,sm8475-qmp-ufs-phy
           - qcom,sm8550-qmp-ufs-phy
           - qcom,sm8650-qmp-ufs-phy
+          - qcom,sm8750-qmp-ufs-phy
 
   reg:
     maxItems: 1
@@ -111,6 +112,7 @@ allOf:
               - qcom,sm8475-qmp-ufs-phy
               - qcom,sm8550-qmp-ufs-phy
               - qcom,sm8650-qmp-ufs-phy
+              - qcom,sm8750-qmp-ufs-phy
     then:
       properties:
         clocks:
index 84fe59d..7a307f4 100644 (file)
@@ -11,8 +11,13 @@ maintainers:
 
 properties:
   compatible:
-    enum:
-      - rockchip,rk3588-hdptx-phy
+    oneOf:
+      - enum:
+          - rockchip,rk3588-hdptx-phy
+      - items:
+          - enum:
+              - rockchip,rk3576-hdptx-phy
+          - const: rockchip,rk3588-hdptx-phy
 
   reg:
     maxItems: 1
@@ -34,24 +39,12 @@ properties:
     const: 0
 
   resets:
-    items:
-      - description: PHY reset line
-      - description: APB reset line
-      - description: INIT reset line
-      - description: CMN reset line
-      - description: LANE reset line
-      - description: ROPLL reset line
-      - description: LCPLL reset line
+    minItems: 4
+    maxItems: 7
 
   reset-names:
-    items:
-      - const: phy
-      - const: apb
-      - const: init
-      - const: cmn
-      - const: lane
-      - const: ropll
-      - const: lcpll
+    minItems: 4
+    maxItems: 7
 
   rockchip,grf:
     $ref: /schemas/types.yaml#/definitions/phandle
@@ -67,6 +60,39 @@ required:
   - reset-names
   - rockchip,grf
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - rockchip,rk3576-hdptx-phy
+    then:
+      properties:
+        resets:
+          minItems: 4
+          maxItems: 4
+        reset-names:
+          items:
+            - const: apb
+            - const: init
+            - const: cmn
+            - const: lane
+    else:
+      properties:
+        resets:
+          minItems: 7
+          maxItems: 7
+        reset-names:
+          items:
+            - const: phy
+            - const: apb
+            - const: init
+            - const: cmn
+            - const: lane
+            - const: ropll
+            - const: lcpll
+
 additionalProperties: false
 
 examples:
diff --git a/Bindings/phy/rockchip,rk3588-mipi-dcphy.yaml b/Bindings/phy/rockchip,rk3588-mipi-dcphy.yaml
new file mode 100644 (file)
index 0000000..c8ff5ba
--- /dev/null
@@ -0,0 +1,87 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/rockchip,rk3588-mipi-dcphy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip MIPI D-/C-PHY with Samsung IP block
+
+maintainers:
+  - Guochun Huang <hero.huang@rock-chips.com>
+  - Heiko Stuebner <heiko@sntech.de>
+
+properties:
+  compatible:
+    enum:
+      - rockchip,rk3576-mipi-dcphy
+      - rockchip,rk3588-mipi-dcphy
+
+  reg:
+    maxItems: 1
+
+  "#phy-cells":
+    const: 1
+    description: |
+      Argument is mode to operate in. Supported modes are:
+        - PHY_TYPE_DPHY
+        - PHY_TYPE_CPHY
+      See include/dt-bindings/phy/phy.h for constants.
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: pclk
+      - const: ref
+
+  resets:
+    maxItems: 4
+
+  reset-names:
+    items:
+      - const: m_phy
+      - const: apb
+      - const: grf
+      - const: s_phy
+
+  rockchip,grf:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to the syscon managing the 'mipi dcphy general register files'.
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - resets
+  - reset-names
+  - "#phy-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/rockchip,rk3588-cru.h>
+    #include <dt-bindings/reset/rockchip,rk3588-cru.h>
+
+    soc {
+      #address-cells = <2>;
+      #size-cells = <2>;
+
+      phy@feda0000 {
+        compatible = "rockchip,rk3588-mipi-dcphy";
+        reg = <0x0 0xfeda0000 0x0 0x10000>;
+        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";
+        rockchip,grf = <&mipidcphy0_grf>;
+        #phy-cells = <1>;
+      };
+    };
index f402e31..d70ffeb 100644 (file)
@@ -18,6 +18,7 @@ properties:
       - google,gs101-ufs-phy
       - samsung,exynos7-ufs-phy
       - samsung,exynosautov9-ufs-phy
+      - samsung,exynosautov920-ufs-phy
       - tesla,fsd-ufs-phy
 
   reg:
index 16321cd..27295ac 100644 (file)
@@ -83,14 +83,19 @@ properties:
 
   pll-supply:
     description: Power supply for the USB PLL.
+
   dvdd-usb20-supply:
     description: DVDD power supply for the USB 2.0 phy.
+
   vddh-usb20-supply:
     description: VDDh power supply for the USB 2.0 phy.
+
   vdd33-usb20-supply:
     description: 3.3V power supply for the USB 2.0 phy.
+
   vdda-usbdp-supply:
     description: VDDa power supply for the USB DP phy.
+
   vddh-usbdp-supply:
     description: VDDh power supply for the USB DP phy.
 
@@ -109,6 +114,8 @@ allOf:
           contains:
             const: google,gs101-usb31drd-phy
     then:
+      $ref: /schemas/usb/usb-switch.yaml#
+
       properties:
         clocks:
           items:
@@ -117,6 +124,7 @@ allOf:
             - description: Gate of control interface AXI clock
             - description: Gate of control interface APB clock
             - description: Gate of SCL APB clock
+
         clock-names:
           items:
             - const: phy
@@ -124,12 +132,17 @@ allOf:
             - const: ctrl_aclk
             - const: ctrl_pclk
             - const: scl_pclk
+
         reg:
           minItems: 3
+
         reg-names:
           minItems: 3
+
       required:
         - reg-names
+        - orientation-switch
+        - port
         - pll-supply
         - dvdd-usb20-supply
         - vddh-usb20-supply
@@ -149,6 +162,7 @@ allOf:
         clocks:
           minItems: 5
           maxItems: 5
+
         clock-names:
           items:
             - const: phy
@@ -156,8 +170,10 @@ allOf:
             - const: phy_utmi
             - const: phy_pipe
             - const: itp
+
         reg:
           maxItems: 1
+
         reg-names:
           maxItems: 1
 
@@ -174,16 +190,19 @@ allOf:
         clocks:
           minItems: 2
           maxItems: 2
+
         clock-names:
           items:
             - const: phy
             - const: ref
+
         reg:
           maxItems: 1
+
         reg-names:
           maxItems: 1
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
index b2601d6..21fd4f1 100644 (file)
@@ -24,6 +24,9 @@ properties:
   '#gpio-cells':
     const: 2
 
+  gpio-ranges:
+    maxItems: 1
+
   interrupt-controller: true
 
   '#interrupt-cells':
diff --git a/Bindings/pinctrl/allwinner,sun55i-a523-pinctrl.yaml b/Bindings/pinctrl/allwinner,sun55i-a523-pinctrl.yaml
new file mode 100644 (file)
index 0000000..154e03d
--- /dev/null
@@ -0,0 +1,175 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/allwinner,sun55i-a523-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner A523 Pin Controller
+
+maintainers:
+  - Andre Przywara <andre.przywara@arm.com>
+
+properties:
+  "#gpio-cells":
+    const: 3
+    description:
+      GPIO consumers must use three arguments, first the number of the
+      bank, then the pin number inside that bank, and finally the GPIO
+      flags.
+
+  "#interrupt-cells":
+    const: 3
+    description:
+      Interrupts consumers must use three arguments, first the number
+      of the bank, then the pin number inside that bank, and finally
+      the interrupts flags.
+
+  compatible:
+    enum:
+      - allwinner,sun55i-a523-pinctrl
+      - allwinner,sun55i-a523-r-pinctrl
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    minItems: 2
+    maxItems: 10
+    description:
+      One interrupt per external interrupt bank supported on the
+      controller, sorted by bank number ascending order.
+
+  clocks:
+    items:
+      - description: Bus Clock
+      - description: High Frequency Oscillator
+      - description: Low Frequency Oscillator
+
+  clock-names:
+    items:
+      - const: apb
+      - const: hosc
+      - const: losc
+
+  gpio-controller: true
+  interrupt-controller: true
+  gpio-line-names: true
+
+  input-debounce:
+    description:
+      Debouncing periods in microseconds, one period per interrupt
+      bank found in the controller
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 2
+    maxItems: 10
+
+patternProperties:
+  # It's pretty scary, but the basic idea is that:
+  #   - One node name can start with either s- or r- for PRCM nodes,
+  #   - Then, the name itself can be any repetition of <string>- (to
+  #     accommodate with nodes like uart4-rts-cts-pins), where each
+  #     string can be either starting with 'p' but in a string longer
+  #     than 3, or something that doesn't start with 'p',
+  #   - Then, the bank name is optional and will be between pa and pm.
+  #     Some pins groups that have several options will have the pin
+  #     numbers then,
+  #   - Finally, the name will end with either -pin or pins.
+
+  "^([rs]-)?(([a-z0-9]{3,}|[a-oq-z][a-z0-9]*?)?-)+?(p[a-m][0-9]*?-)??pins?$":
+    type: object
+
+    properties:
+      pins: true
+      function: true
+      bias-disable: true
+      bias-pull-up: true
+      bias-pull-down: true
+
+      drive-strength:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        enum: [10, 20, 30, 40]
+
+      allwinner,pinmux:
+        $ref: /schemas/types.yaml#/definitions/uint32-array
+        description:
+          Pinmux selector value, for each pin. Almost every time this value
+          is the same for all pins, so any array shorter than the number of
+          pins will repeat the last value, to allow just specifying a single
+          cell, for all cells.
+
+    required:
+      - pins
+      - allwinner,pinmux
+      - function
+
+    additionalProperties: false
+
+  "^vcc-p[a-m]-supply$":
+    description:
+      Power supplies for pin banks.
+
+required:
+  - "#gpio-cells"
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - gpio-controller
+  - "#interrupt-cells"
+  - interrupts
+  - interrupt-controller
+
+allOf:
+  - $ref: pinctrl.yaml#
+  - if:
+      properties:
+        compatible:
+          enum:
+            - allwinner,sun55i-a523-pinctrl
+
+    then:
+      properties:
+        interrupts:
+          minItems: 10
+          maxItems: 10
+
+  - if:
+      properties:
+        compatible:
+          enum:
+            - allwinner,sun55i-a523-r-pinctrl
+
+    then:
+      properties:
+        interrupts:
+          minItems: 2
+          maxItems: 2
+
+additionalProperties: false
+
+examples:
+  - |
+    r_pio: pinctrl@7022000 {
+        compatible = "allwinner,sun55i-a523-r-pinctrl";
+        reg = <0x7022000 0x800>;
+        interrupts = <0 159 4>, <0 161 4>;
+        clocks = <&r_ccu 1>, <&osc24M>, <&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";
+            bias-pull-up;
+        };
+
+        r_spi_pins: r-spi-pins {
+            pins = "PL11" ,"PL12", "PL13";
+            allwinner,pinmux = <6>;
+            function = "r_spi";
+        };
+    };
diff --git a/Bindings/pinctrl/amlogic,pinctrl-a4.yaml b/Bindings/pinctrl/amlogic,pinctrl-a4.yaml
new file mode 100644 (file)
index 0000000..8eb50ca
--- /dev/null
@@ -0,0 +1,126 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/amlogic,pinctrl-a4.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Amlogic pinmux controller
+
+maintainers:
+  - Xianwei Zhao <xianwei.zhao@amlogic.com>
+
+allOf:
+  - $ref: pinctrl.yaml#
+
+properties:
+  compatible:
+    const: amlogic,pinctrl-a4
+
+  "#address-cells":
+    const: 2
+
+  "#size-cells":
+    const: 2
+
+  ranges: true
+
+patternProperties:
+  "^gpio@[0-9a-f]+$":
+    type: object
+
+    additionalProperties: false
+    properties:
+      reg:
+        minItems: 1
+        items:
+          - description: pin config register
+          - description: pin mux setting register (some special pin fixed function)
+          - description: pin drive strength register (optional)
+
+      reg-names:
+        minItems: 1
+        items:
+          - const: gpio
+          - const: mux
+          - const: ds
+
+      gpio-controller: true
+
+      "#gpio-cells":
+        const: 2
+
+      gpio-ranges:
+        maxItems: 1
+
+    required:
+      - reg
+      - reg-names
+      - gpio-controller
+      - "#gpio-cells"
+      - gpio-ranges
+
+  "^func-[0-9a-z-]+$":
+    type: object
+    additionalProperties: false
+    patternProperties:
+      "^group-[0-9a-z-]+$":
+        type: object
+        allOf:
+          - $ref: /schemas/pinctrl/pincfg-node.yaml
+          - $ref: /schemas/pinctrl/pinmux-node.yaml
+
+        required:
+          - pinmux
+
+required:
+  - compatible
+  - "#address-cells"
+  - "#size-cells"
+  - ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/pinctrl/amlogic,pinctrl.h>
+    apb {
+      #address-cells = <2>;
+      #size-cells = <2>;
+      periphs_pinctrl: pinctrl {
+        compatible = "amlogic,pinctrl-a4";
+        #address-cells = <2>;
+        #size-cells = <2>;
+        ranges;
+
+        gpio@4240 {
+          reg = <0 0x4240 0 0x40>, <0 0x4000 0 0x8>;
+          reg-names = "gpio", "mux";
+          gpio-controller;
+          #gpio-cells = <2>;
+          gpio-ranges = <&periphs_pinctrl 0 8 10>;
+        };
+
+        func-uart-b {
+          group-default {
+            pinmux = <AML_PINMUX(AMLOGIC_GPIO_B, 1, 4)>;
+            bias-pull-up;
+            drive-strength-microamp = <4000>;
+          };
+
+          group-pins1 {
+            pinmux = <AML_PINMUX(AMLOGIC_GPIO_B, 5, 2)>;
+            bias-pull-up;
+            drive-strength-microamp = <4000>;
+          };
+        };
+
+        func-uart-c {
+          group-default {
+            pinmux = <AML_PINMUX(AMLOGIC_GPIO_B, 3, 1)>,
+                     <AML_PINMUX(AMLOGIC_GPIO_B, 2, 1)>;
+            bias-pull-up;
+            drive-strength-microamp = <4000>;
+          };
+        };
+      };
+    };
index 774c3c2..81a05a0 100644 (file)
@@ -6,6 +6,7 @@ configure it.
 Required properties:
 - compatible:
        "atmel,sama5d2-pinctrl"
+       "microchip,sama7d65-pinctrl", "microchip,sama7g5-pinctrl"
        "microchip,sama7g5-pinctrl"
 - reg: base address and length of the PIO controller.
 - interrupts: interrupt outputs from the controller, one for each bank.
diff --git a/Bindings/pinctrl/brcm,bcm21664-pinctrl.yaml b/Bindings/pinctrl/brcm,bcm21664-pinctrl.yaml
new file mode 100644 (file)
index 0000000..1283a58
--- /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/pinctrl/brcm,bcm21664-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM21664 pin controller
+
+maintainers:
+  - Florian Fainelli <florian.fainelli@broadcom.com>
+  - Ray Jui <rjui@broadcom.com>
+  - Scott Branden <sbranden@broadcom.com>
+
+allOf:
+  - $ref: pinctrl.yaml#
+
+properties:
+  compatible:
+    const: brcm,bcm21664-pinctrl
+
+  reg:
+    maxItems: 1
+
+patternProperties:
+  '-pins$':
+    type: object
+    additionalProperties: false
+
+    patternProperties:
+      '-grp[0-9]$':
+        type: object
+
+        properties:
+          pins:
+            description:
+              Specifies the name(s) of one or more pins to be configured by
+              this node.
+            items:
+              enum: [ adcsyn, batrm, bsc1clk, bsc1dat, camcs0, camcs1, clk32k,
+                      clk_cx8, dclk1, dclk4, dclkreq1, dclkreq4, dmic0clk,
+                      dmic0dq, dsi0te, gpio00, gpio01, gpio02, gpio03, gpio04,
+                      gpio05, gpio06, gpio07, gpio08, gpio09, gpio10, gpio11,
+                      gpio12, gpio13, gpio14, gpio15, gpio16, gpio17, gpio18,
+                      gpio19, gpio20, gpio21, gpio22, gpio23, gpio24, gpio25,
+                      gpio26, gpio27, gpio28, gpio32, gpio33, gpio34, gpio93,
+                      gpio94, gps_calreq, gps_hostreq, gps_pablank, gps_tmark,
+                      icusbdm, icusbdp, lcdcs0, lcdres, lcdscl, lcdsda, lcdte,
+                      mdmgpio00, mdmgpio01, mdmgpio02, mdmgpio03, mdmgpio04,
+                      mdmgpio05, mdmgpio06, mdmgpio07, mdmgpio08, mmc0ck,
+                      mmc0cmd, mmc0dat0, mmc0dat1, mmc0dat2, mmc0dat3, mmc0dat4,
+                      mmc0dat5, mmc0dat6, mmc0dat7, mmc0rst, mmc1ck, mmc1cmd,
+                      mmc1dat0, mmc1dat1, mmc1dat2, mmc1dat3, mmc1dat4,
+                      mmc1dat5, mmc1dat6, mmc1dat7, mmc1rst, pc1, pc2, pmbscclk,
+                      pmbscdat, pmuint, resetn, rfst2g_mtsloten3g,
+                      rtxdata2g_txdata3g1, rtxen2g_txdata3g2, rxdata3g0,
+                      rxdata3g1, rxdata3g2, sdck, sdcmd, sddat0, sddat1, sddat2,
+                      sddat3, simclk, simdat, simdet, simrst, spi0clk, spi0fss,
+                      spi0rxd, spi0txd, sri_c, sri_d, sri_e, sspck, sspdi,
+                      sspdo, sspsyn, stat1, stat2, swclktck, swdiotms, sysclken,
+                      tdi, tdo, testmode, traceclk, tracedt00, tracedt01,
+                      tracedt02, tracedt03, tracedt04, tracedt05, tracedt06,
+                      tracedt07, tracedt08, tracedt09, tracedt10, tracedt11,
+                      tracedt12, tracedt13, tracedt14, tracedt15, trstb,
+                      txdata3g0, ubctsn, ubrtsn, ubrx, ubtx ]
+
+          function:
+            description:
+              Specifies the pin mux selection.
+            enum: [ alt1, alt2, alt3, alt4, alt5, alt6 ]
+
+          bias-disable: true
+
+          bias-pull-up:
+            type: boolean
+
+          bias-pull-down:
+            type: boolean
+
+          slew-rate:
+            description: |
+              Meaning depends on configured pin mux:
+                bsc*clk/pmbscclk or bsc*dat/pmbscdat or gpio16/gpio17:
+                  0: Standard (100 kbps) & Fast (400 kbps) mode
+                  1: Highspeed (3.4 Mbps) mode
+                Otherwise:
+                  0: fast slew rate
+                  1: normal slew rate
+
+          drive-strength:
+            enum: [ 2, 4, 6, 8, 10, 12, 14, 16 ]
+
+          input-enable: true
+          input-disable: true
+
+          input-schmitt-enable: true
+          input-schmitt-disable: true
+
+        required:
+          - pins
+
+        additionalProperties: false
+
+        allOf:
+          - $ref: pincfg-node.yaml#
+          # Limitations for I2C pins
+          - if:
+              properties:
+                pins:
+                  contains:
+                    enum: [ bsc1clk, bsc1dat, gpio16, gpio17, pmbscclk,
+                            pmbscdat ]
+            then:
+              properties:
+                drive-strength: false
+                bias-pull-down: false
+                input-schmitt-enable: false
+                input-schmitt-disable: false
+
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    pinctrl@35004800 {
+      compatible = "brcm,bcm21664-pinctrl";
+      reg = <0x35004800 0x7f0>;
+
+      dev-a-active-pins {
+        /* group node defining 1 standard pin */
+        std-grp0 {
+          pins = "gpio00";
+          function = "alt1";
+          input-schmitt-enable;
+          bias-disable;
+          slew-rate = <1>;
+          drive-strength = <4>;
+        };
+
+        /* group node defining 2 I2C pins */
+        i2c-grp0 {
+          pins = "bsc1clk", "bsc1dat";
+          function = "alt2";
+          bias-pull-up;
+          input-enable;
+        };
+      };
+    };
+...
index 8909618..84e9602 100644 (file)
@@ -42,6 +42,7 @@ properties:
           - ingenic,jz4780-pinctrl
           - ingenic,x1000-pinctrl
           - ingenic,x1500-pinctrl
+          - ingenic,x1600-pinctrl
           - ingenic,x1830-pinctrl
           - ingenic,x2000-pinctrl
           - ingenic,x2100-pinctrl
@@ -81,6 +82,7 @@ patternProperties:
           - ingenic,jz4780-gpio
           - ingenic,x1000-gpio
           - ingenic,x1500-gpio
+          - ingenic,x1600-gpio
           - ingenic,x1830-gpio
           - ingenic,x2000-gpio
           - ingenic,x2100-gpio
index 749dbc5..7a156b9 100644 (file)
@@ -79,7 +79,7 @@ $defs:
                 cri_trng, cri_trng0, cri_trng1, dbg_out, ddr_bist, ddr_pxi0,
                 ddr_pxi1, ddr_pxi2, ddr_pxi3, ddr_pxi4, ddr_pxi5, edp0_hot,
                 edp0_lcd, edp1_hot, edp1_lcd, edp2_hot, edp2_lcd, edp3_hot,
-                edp3_lcd, emac0_mcg0, emac0_mcg1, emac0_mcg2, emac0_mcg3,
+                edp3_lcd, egpio, emac0_mcg0, emac0_mcg1, emac0_mcg2, emac0_mcg3,
                 emac0_mdc, emac0_mdio, emac0_ptp_aux, emac0_ptp_pps, emac1_mcg0,
                 emac1_mcg1, emac1_mcg2, emac1_mcg3, emac1_mdc, emac1_mdio,
                 emac1_ptp_aux, emac1_ptp_pps, gcc_gp1, gcc_gp2, gcc_gp3,
index 80a2b19..960758d 100644 (file)
@@ -44,6 +44,7 @@ properties:
       - rockchip,rk3328-pinctrl
       - rockchip,rk3368-pinctrl
       - rockchip,rk3399-pinctrl
+      - rockchip,rk3528-pinctrl
       - rockchip,rk3562-pinctrl
       - rockchip,rk3568-pinctrl
       - rockchip,rk3576-pinctrl
index 68ed714..0da6d69 100644 (file)
@@ -40,6 +40,7 @@ properties:
       - items:
           - enum:
               - samsung,exynos5433-wakeup-eint
+              - samsung,exynos7870-wakeup-eint
               - samsung,exynos7885-wakeup-eint
               - samsung,exynos850-wakeup-eint
               - samsung,exynos8895-wakeup-eint
@@ -47,6 +48,7 @@ properties:
       - items:
           - enum:
               - google,gs101-wakeup-eint
+              - samsung,exynos2200-wakeup-eint
               - samsung,exynos9810-wakeup-eint
               - samsung,exynos990-wakeup-eint
               - samsung,exynosautov9-wakeup-eint
@@ -104,6 +106,7 @@ allOf:
             - contains:
                 enum:
                   - samsung,exynos5433-wakeup-eint
+                  - samsung,exynos7870-wakeup-eint
                   - samsung,exynos7885-wakeup-eint
                   - samsung,exynos8895-wakeup-eint
     then:
index 5296a9e..de84608 100644 (file)
@@ -42,6 +42,7 @@ properties:
       - samsung,s3c2450-pinctrl
       - samsung,s3c64xx-pinctrl
       - samsung,s5pv210-pinctrl
+      - samsung,exynos2200-pinctrl
       - samsung,exynos3250-pinctrl
       - samsung,exynos4210-pinctrl
       - samsung,exynos4x12-pinctrl
@@ -51,6 +52,7 @@ properties:
       - samsung,exynos5420-pinctrl
       - samsung,exynos5433-pinctrl
       - samsung,exynos7-pinctrl
+      - samsung,exynos7870-pinctrl
       - samsung,exynos7885-pinctrl
       - samsung,exynos850-pinctrl
       - samsung,exynos8895-pinctrl
diff --git a/Bindings/pinctrl/sophgo,sg2042-pinctrl.yaml b/Bindings/pinctrl/sophgo,sg2042-pinctrl.yaml
new file mode 100644 (file)
index 0000000..924dfe1
--- /dev/null
@@ -0,0 +1,129 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/sophgo,sg2042-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sophgo SG2042 Pin Controller
+
+maintainers:
+  - Inochi Amaoto <inochiama@outlook.com>
+
+properties:
+  compatible:
+    enum:
+      - sophgo,sg2042-pinctrl
+      - sophgo,sg2044-pinctrl
+
+  reg:
+    maxItems: 1
+
+patternProperties:
+  '-cfg$':
+    type: object
+    description:
+      A pinctrl node should contain at least one subnode representing the
+      pinctrl groups available on the machine.
+
+    additionalProperties: false
+
+    patternProperties:
+      '-pins$':
+        type: object
+        description: |
+          Each subnode will list the pins it needs, and how they should
+          be configured, with regard to muxer configuration, bias input
+          enable/disable, input schmitt trigger enable, drive strength
+          output enable/disable state. For configuration detail,
+          refer to https://github.com/sophgo/sophgo-doc/.
+
+        allOf:
+          - $ref: pincfg-node.yaml#
+          - $ref: pinmux-node.yaml#
+
+        properties:
+          pinmux:
+            description: |
+              The list of GPIOs and their mux settings that properties in the
+              node apply to. This should be set using the PINMUX macro.
+
+          bias-disable: true
+
+          bias-pull-up:
+            type: boolean
+
+          bias-pull-down:
+            type: boolean
+
+          drive-strength-microamp:
+            description: typical current when output low level.
+
+          input-schmitt-enable: true
+
+          input-schmitt-disable: true
+
+        required:
+          - pinmux
+
+        additionalProperties: false
+
+required:
+  - compatible
+  - reg
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: sophgo,sg2042-pinctrl
+    then:
+      patternProperties:
+        '-cfg$':
+          patternProperties:
+            '-pins$':
+              properties:
+                drive-strength-microamp:
+                  enum: [ 5400, 8100, 10700, 13400,
+                          16100, 18800, 21400, 24100,
+                          26800, 29400, 32100, 34800,
+                          37400, 40100, 42800, 45400 ]
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: sophgo,sg2044-pinctrl
+    then:
+      patternProperties:
+        '-cfg$':
+          patternProperties:
+            '-pins$':
+              properties:
+                drive-strength-microamp:
+                  enum: [ 3200, 6400, 9600, 12700,
+                          15900, 19100, 22200, 25300,
+                          29500, 32700, 35900, 39000,
+                          42000, 45200, 48300, 51400]
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/pinctrl/pinctrl-sg2042.h>
+
+    pinctrl@30011000 {
+        compatible = "sophgo,sg2042-pinctrl";
+        reg = <30011000 0x1000>;
+
+        uart0_cfg: uart0-cfg {
+            uart0-pins {
+                pinmux = <PINMUX(PIN_UART0_TX, 0)>,
+                         <PINMUX(PIN_UART0_RX, 0)>;
+                bias-pull-up;
+                drive-strength-microamp = <13400>;
+            };
+        };
+    };
+
+...
diff --git a/Bindings/platform/huawei,gaokun-ec.yaml b/Bindings/platform/huawei,gaokun-ec.yaml
new file mode 100644 (file)
index 0000000..4a03b0e
--- /dev/null
@@ -0,0 +1,124 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/platform/huawei,gaokun-ec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Huawei Matebook E Go Embedded Controller
+
+maintainers:
+  - Pengyu Luo <mitltlatltl@gmail.com>
+
+description:
+  Different from other Qualcomm Snapdragon sc8180x and sc8280xp-based
+  machines, the Huawei Matebook E Go tablets use embedded controllers
+  while others use a system called PMIC GLink which handles battery,
+  UCSI, USB Type-C DP Alt Mode. In addition, Huawei's implementation
+  also handles additional features, such as charging thresholds, FN
+  lock, smart charging, tablet lid status, thermal sensors, and more.
+
+properties:
+  compatible:
+    enum:
+      - huawei,gaokun3-ec
+
+  reg:
+    const: 0x38
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  interrupts:
+    maxItems: 1
+
+patternProperties:
+  '^connector@[01]$':
+    $ref: /schemas/connector/usb-connector.yaml#
+
+    properties:
+      reg:
+        maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        embedded-controller@38 {
+            compatible = "huawei,gaokun3-ec";
+            reg = <0x38>;
+
+            interrupts-extended = <&tlmm 107 IRQ_TYPE_LEVEL_LOW>;
+
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            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>;
+
+                        ucsi0_ss_in: endpoint {
+                            remote-endpoint = <&usb_0_qmpphy_out>;
+                        };
+                    };
+
+                    port@1 {
+                        reg = <1>;
+
+                        ucsi0_sbu: endpoint {
+                            remote-endpoint = <&usb0_sbu_mux>;
+                        };
+                    };
+                };
+            };
+
+            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>;
+
+                        ucsi1_ss_in: endpoint {
+                            remote-endpoint = <&usb_1_qmpphy_out>;
+                        };
+                    };
+
+                    port@1 {
+                        reg = <1>;
+
+                        ucsi1_sbu: endpoint {
+                            remote-endpoint = <&usb1_sbu_mux>;
+                        };
+                    };
+                };
+            };
+        };
+    };
index 46e2647..f578be6 100644 (file)
@@ -17,6 +17,7 @@ properties:
   compatible:
     enum:
       - allwinner,sun20i-d1-ppu
+      - allwinner,sun8i-v853-ppu
 
   reg:
     maxItems: 1
index 59a6af7..6e9a670 100644 (file)
@@ -31,6 +31,11 @@ properties:
   compatible:
     items:
       - enum:
+          - apple,s5l8960x-pmgr-pwrstate
+          - apple,t7000-pmgr-pwrstate
+          - apple,s8000-pmgr-pwrstate
+          - apple,t8010-pmgr-pwrstate
+          - apple,t8015-pmgr-pwrstate
           - apple,t8103-pmgr-pwrstate
           - apple,t8112-pmgr-pwrstate
           - apple,t6000-pmgr-pwrstate
index 202a5d5..3fa77fe 100644 (file)
@@ -18,7 +18,9 @@ description:
 
 properties:
   compatible:
-    const: qcom,kpss-acc-v2
+    enum:
+      - qcom,kpss-acc-v2
+      - qcom,msm8916-acc
 
   reg:
     items:
index 0735ceb..9c34249 100644 (file)
@@ -16,6 +16,11 @@ description: |
 properties:
   compatible:
     oneOf:
+      - items:
+          - enum:
+              - microchip,sama7d65-shdwc
+          - const: microchip,sama7g5-shdwc
+          - const: syscon
       - items:
           - const: microchip,sama7g5-shdwc
           - const: syscon
index 7998316..079ad97 100644 (file)
@@ -46,7 +46,6 @@ properties:
 
 required:
   - compatible
-  - interrupts
 
 additionalProperties: false
 
index 650dc0a..ebab989 100644 (file)
@@ -132,6 +132,9 @@ $defs:
           A number of phandles to clocks that need to be enabled
           while power domain switches state.
 
+      domain-supply:
+        description: domain regulator supply.
+
       pm_qos:
         $ref: /schemas/types.yaml#/definitions/phandle-array
         items:
diff --git a/Bindings/power/supply/maxim,max77705.yaml b/Bindings/power/supply/maxim,max77705.yaml
new file mode 100644 (file)
index 0000000..bce7fab
--- /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/power/supply/maxim,max77705.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Maxim MAX777705 charger
+
+maintainers:
+  - Dzmitry Sankouski <dsankouski@gmail.com>
+
+description: |
+  This is a device tree bindings for charger found in Maxim MAX77705 chip.
+
+allOf:
+  - $ref: power-supply.yaml#
+
+properties:
+  compatible:
+    const: maxim,max77705-charger
+
+  interrupts:
+    maxItems: 1
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - monitored-battery
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+        charger@69 {
+            compatible = "maxim,max77705-charger";
+            reg = <0x69>;
+            monitored-battery = <&battery>;
+            interrupt-parent = <&pm8998_gpios>;
+            interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+        };
+    };
index 5ccd375..3504c76 100644 (file)
@@ -14,9 +14,6 @@ maintainers:
   - Chen-Yu Tsai <wens@csie.org>
   - Sebastian Reichel <sre@kernel.org>
 
-allOf:
-  - $ref: power-supply.yaml#
-
 properties:
   compatible:
     oneOf:
@@ -35,7 +32,24 @@ properties:
       this gauge.
     $ref: /schemas/types.yaml#/definitions/phandle
 
+  x-powers,no-thermistor:
+    type: boolean
+    description: Indicates that no thermistor is connected to the TS pin
+
 required:
   - compatible
 
+allOf:
+  - $ref: power-supply.yaml#
+  - if:
+      not:
+        properties:
+          compatible:
+            contains:
+              enum:
+                - x-powers,axp717-battery-power-supply
+    then:
+      properties:
+        x-powers,no-thermistor: false
+
 additionalProperties: false
index 27f1797..66bb016 100644 (file)
@@ -23,7 +23,7 @@ List of legacy properties and respective binding document
 
 1. "gpio-key,wakeup"           Documentation/devicetree/bindings/input/gpio-keys{,-polled}.txt
 2. "has-tpo"                   Documentation/devicetree/bindings/rtc/rtc-opal.txt
-3. "linux,wakeup"              Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
+3. "linux,wakeup"              Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml
                                Documentation/devicetree/bindings/mfd/tc3589x.txt
                                Documentation/devicetree/bindings/input/touchscreen/ti,ads7843.yaml
 4. "linux,keypad-wakeup"       Documentation/devicetree/bindings/input/qcom,pm8921-keypad.yaml
diff --git a/Bindings/powerpc/fsl/dma.txt b/Bindings/powerpc/fsl/dma.txt
deleted file mode 100644 (file)
index c11ad5c..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-* Freescale DMA Controllers
-
-** Freescale Elo DMA Controller
-   This is a little-endian 4-channel DMA controller, used in Freescale mpc83xx
-   series chips such as mpc8315, mpc8349, mpc8379 etc.
-
-Required properties:
-
-- compatible        : must include "fsl,elo-dma"
-- reg               : DMA General Status Register, i.e. DGSR which contains
-                      status for all the 4 DMA channels
-- ranges            : describes the mapping between the address space of the
-                      DMA channels and the address space of the DMA controller
-- cell-index        : controller index.  0 for controller @ 0x8100
-- interrupts        : interrupt specifier for DMA IRQ
-
-- DMA channel nodes:
-        - compatible        : must include "fsl,elo-dma-channel"
-                              However, see note below.
-        - reg               : DMA channel specific registers
-        - cell-index        : DMA channel index starts at 0.
-
-Optional properties:
-        - interrupts        : interrupt specifier for DMA channel IRQ
-                              (on 83xx this is expected to be identical to
-                              the interrupts property of the parent node)
-
-Example:
-       dma@82a8 {
-               #address-cells = <1>;
-               #size-cells = <1>;
-               compatible = "fsl,mpc8349-dma", "fsl,elo-dma";
-               reg = <0x82a8 4>;
-               ranges = <0 0x8100 0x1a4>;
-               interrupt-parent = <&ipic>;
-               interrupts = <71 8>;
-               cell-index = <0>;
-               dma-channel@0 {
-                       compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
-                       cell-index = <0>;
-                       reg = <0 0x80>;
-                       interrupt-parent = <&ipic>;
-                       interrupts = <71 8>;
-               };
-               dma-channel@80 {
-                       compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
-                       cell-index = <1>;
-                       reg = <0x80 0x80>;
-                       interrupt-parent = <&ipic>;
-                       interrupts = <71 8>;
-               };
-               dma-channel@100 {
-                       compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
-                       cell-index = <2>;
-                       reg = <0x100 0x80>;
-                       interrupt-parent = <&ipic>;
-                       interrupts = <71 8>;
-               };
-               dma-channel@180 {
-                       compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
-                       cell-index = <3>;
-                       reg = <0x180 0x80>;
-                       interrupt-parent = <&ipic>;
-                       interrupts = <71 8>;
-               };
-       };
-
-** Freescale EloPlus DMA Controller
-   This is a 4-channel DMA controller with extended addresses and chaining,
-   mainly used in Freescale mpc85xx/86xx, Pxxx and BSC series chips, such as
-   mpc8540, mpc8641 p4080, bsc9131 etc.
-
-Required properties:
-
-- compatible        : must include "fsl,eloplus-dma"
-- reg               : DMA General Status Register, i.e. DGSR which contains
-                      status for all the 4 DMA channels
-- cell-index        : controller index.  0 for controller @ 0x21000,
-                                         1 for controller @ 0xc000
-- ranges            : describes the mapping between the address space of the
-                      DMA channels and the address space of the DMA controller
-
-- DMA channel nodes:
-        - compatible        : must include "fsl,eloplus-dma-channel"
-                              However, see note below.
-        - cell-index        : DMA channel index starts at 0.
-        - reg               : DMA channel specific registers
-        - interrupts        : interrupt specifier for DMA channel IRQ
-
-Example:
-       dma@21300 {
-               #address-cells = <1>;
-               #size-cells = <1>;
-               compatible = "fsl,mpc8540-dma", "fsl,eloplus-dma";
-               reg = <0x21300 4>;
-               ranges = <0 0x21100 0x200>;
-               cell-index = <0>;
-               dma-channel@0 {
-                       compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
-                       reg = <0 0x80>;
-                       cell-index = <0>;
-                       interrupt-parent = <&mpic>;
-                       interrupts = <20 2>;
-               };
-               dma-channel@80 {
-                       compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
-                       reg = <0x80 0x80>;
-                       cell-index = <1>;
-                       interrupt-parent = <&mpic>;
-                       interrupts = <21 2>;
-               };
-               dma-channel@100 {
-                       compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
-                       reg = <0x100 0x80>;
-                       cell-index = <2>;
-                       interrupt-parent = <&mpic>;
-                       interrupts = <22 2>;
-               };
-               dma-channel@180 {
-                       compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel";
-                       reg = <0x180 0x80>;
-                       cell-index = <3>;
-                       interrupt-parent = <&mpic>;
-                       interrupts = <23 2>;
-               };
-       };
-
-** Freescale Elo3 DMA Controller
-   DMA controller which has same function as EloPlus except that Elo3 has 8
-   channels while EloPlus has only 4, it is used in Freescale Txxx and Bxxx
-   series chips, such as t1040, t4240, b4860.
-
-Required properties:
-
-- compatible        : must include "fsl,elo3-dma"
-- reg               : contains two entries for DMA General Status Registers,
-                      i.e. DGSR0 which includes status for channel 1~4, and
-                      DGSR1 for channel 5~8
-- ranges            : describes the mapping between the address space of the
-                      DMA channels and the address space of the DMA controller
-
-- DMA channel nodes:
-        - compatible        : must include "fsl,eloplus-dma-channel"
-        - reg               : DMA channel specific registers
-        - interrupts        : interrupt specifier for DMA channel IRQ
-
-Example:
-dma@100300 {
-       #address-cells = <1>;
-       #size-cells = <1>;
-       compatible = "fsl,elo3-dma";
-       reg = <0x100300 0x4>,
-             <0x100600 0x4>;
-       ranges = <0x0 0x100100 0x500>;
-       dma-channel@0 {
-               compatible = "fsl,eloplus-dma-channel";
-               reg = <0x0 0x80>;
-               interrupts = <28 2 0 0>;
-       };
-       dma-channel@80 {
-               compatible = "fsl,eloplus-dma-channel";
-               reg = <0x80 0x80>;
-               interrupts = <29 2 0 0>;
-       };
-       dma-channel@100 {
-               compatible = "fsl,eloplus-dma-channel";
-               reg = <0x100 0x80>;
-               interrupts = <30 2 0 0>;
-       };
-       dma-channel@180 {
-               compatible = "fsl,eloplus-dma-channel";
-               reg = <0x180 0x80>;
-               interrupts = <31 2 0 0>;
-       };
-       dma-channel@300 {
-               compatible = "fsl,eloplus-dma-channel";
-               reg = <0x300 0x80>;
-               interrupts = <76 2 0 0>;
-       };
-       dma-channel@380 {
-               compatible = "fsl,eloplus-dma-channel";
-               reg = <0x380 0x80>;
-               interrupts = <77 2 0 0>;
-       };
-       dma-channel@400 {
-               compatible = "fsl,eloplus-dma-channel";
-               reg = <0x400 0x80>;
-               interrupts = <78 2 0 0>;
-       };
-       dma-channel@480 {
-               compatible = "fsl,eloplus-dma-channel";
-               reg = <0x480 0x80>;
-               interrupts = <79 2 0 0>;
-       };
-};
-
-Note on DMA channel compatible properties: The compatible property must say
-"fsl,elo-dma-channel" or "fsl,eloplus-dma-channel" to be used by the Elo DMA
-driver (fsldma).  Any DMA channel used by fsldma cannot be used by another
-DMA driver, such as the SSI sound drivers for the MPC8610.  Therefore, any DMA
-channel that should be used for another driver should not use
-"fsl,elo-dma-channel" or "fsl,eloplus-dma-channel".  For the SSI drivers, for
-example, the compatible property should be "fsl,ssi-dma-channel".  See ssi.txt
-for more information.
diff --git a/Bindings/powerpc/fsl/mcu-mpc8349emitx.txt b/Bindings/powerpc/fsl/mcu-mpc8349emitx.txt
deleted file mode 100644 (file)
index 37f91fa..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-Freescale MPC8349E-mITX-compatible Power Management Micro Controller Unit (MCU)
-
-Required properties:
-- compatible : "fsl,<mcu-chip>-<board>", "fsl,mcu-mpc8349emitx".
-- reg : should specify I2C address (0x0a).
-- #gpio-cells : should be 2.
-- gpio-controller : should be present.
-
-Example:
-
-mcu@a {
-       #gpio-cells = <2>;
-       compatible = "fsl,mc9s08qg8-mpc8349emitx",
-                    "fsl,mcu-mpc8349emitx";
-       reg = <0x0a>;
-       gpio-controller;
-};
index fd4adfa..383a838 100644 (file)
@@ -36,14 +36,14 @@ additionalProperties: false
 
 examples:
   - |
-      #include <dt-bindings/gpio/gpio.h>
-
-      pps {
-          compatible = "pps-gpio";
-          pinctrl-names = "default";
-          pinctrl-0 = <&pinctrl_pps>;
-          gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>;
-          assert-falling-edge;
-          echo-gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>;
-          echo-active-ms = <100>;
-      };
+    #include <dt-bindings/gpio/gpio.h>
+
+    pps {
+        compatible = "pps-gpio";
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_pps>;
+        gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>;
+        assert-falling-edge;
+        echo-gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>;
+        echo-active-ms = <100>;
+    };
index ac0a35b..d5a9340 100644 (file)
@@ -23,8 +23,15 @@ properties:
     const: 3
 
   compatible:
-    enum:
-      - fsl,imx7ulp-pwm
+    oneOf:
+      - enum:
+          - fsl,imx7ulp-pwm
+      - items:
+          - enum:
+              - fsl,imx93-pwm
+              - fsl,imx94-pwm
+              - fsl,imx95-pwm
+          - const: fsl,imx7ulp-pwm
 
   reg:
     maxItems: 1
diff --git a/Bindings/pwm/pwm-nexus-node.yaml b/Bindings/pwm/pwm-nexus-node.yaml
new file mode 100644 (file)
index 0000000..3b40e27
--- /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/pwm/pwm-nexus-node.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: PWM Nexus node properties
+
+description: >
+  Platforms can have a standardized connector/expansion slot that exposes PWMs
+  signals to expansion boards.
+
+  A nexus node allows to remap a phandle list in a consumer node through a
+  connector node in a generic way. With this remapping, the consumer node needs
+  to know only about the nexus node. Resources behind the nexus node are
+  decoupled by the nexus node itself.
+
+maintainers:
+  - Herve Codina <herve.codina@bootlin.com>
+
+select: true
+
+properties:
+  '#pwm-cells': true
+
+  pwm-map:
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+
+  pwm-map-mask:
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+
+  pwm-map-pass-thru:
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+
+dependentRequired:
+  pwm-map: ['#pwm-cells']
+  pwm-map-mask: [ pwm-map ]
+  pwm-map-pass-thru: [ pwm-map ]
+
+additionalProperties: true
+
+examples:
+  - |
+        pwm1: pwm@100 {
+            reg = <0x100 0x10>;
+            #pwm-cells = <3>;
+        };
+
+        pwm2: pwm@200 {
+            reg = <0x200 0x10>;
+            #pwm-cells = <3>;
+        };
+
+        connector: connector {
+            #pwm-cells = <3>;
+            pwm-map = <0 0 0 &pwm1 1 0 0>,
+                      <1 0 0 &pwm2 4 0 0>,
+                      <2 0 0 &pwm1 3 0 0>;
+            pwm-map-mask = <0xffffffff 0x0 0x0>;
+            pwm-map-pass-thru = <0x0 0xffffffff 0xffffffff>;
+        };
+
+        device {
+            pwms = <&connector 1 57000 0>;
+        };
index 65bfb49..c8cdfb7 100644 (file)
@@ -30,6 +30,8 @@ properties:
           - enum:
               - rockchip,px30-pwm
               - rockchip,rk3308-pwm
+              - rockchip,rk3528-pwm
+              - rockchip,rk3562-pwm
               - rockchip,rk3568-pwm
               - rockchip,rk3588-pwm
               - rockchip,rv1126-pwm
index a4dfa09..f85ee5d 100644 (file)
@@ -9,15 +9,6 @@ title: Renesas R-Car Timer Pulse Unit PWM Controller
 maintainers:
   - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
 
-select:
-  properties:
-    compatible:
-      contains:
-        const: renesas,tpu
-  required:
-    - compatible
-    - '#pwm-cells'
-
 properties:
   compatible:
     items:
diff --git a/Bindings/pwm/sophgo,sg2042-pwm.yaml b/Bindings/pwm/sophgo,sg2042-pwm.yaml
new file mode 100644 (file)
index 0000000..bbb6326
--- /dev/null
@@ -0,0 +1,58 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/sophgo,sg2042-pwm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sophgo SG2042 PWM controller
+
+maintainers:
+  - Chen Wang <unicorn_wang@outlook.com>
+
+description:
+  This controller contains 4 channels which can generate PWM waveforms.
+
+allOf:
+  - $ref: pwm.yaml#
+
+properties:
+  compatible:
+    const: sophgo,sg2042-pwm
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: apb
+
+  resets:
+    maxItems: 1
+
+  "#pwm-cells":
+    const: 3
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - resets
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/reset/sophgo,sg2042-reset.h>
+
+    pwm@7f006000 {
+        compatible = "sophgo,sg2042-pwm";
+        reg = <0x7f006000 0x1000>;
+        #pwm-cells = <3>;
+        clocks = <&clock 67>;
+        clock-names = "apb";
+        resets = <&rstgen RST_PWM>;
+    };
index 68709a7..4ffe5c3 100644 (file)
@@ -17,6 +17,9 @@ description: |
   Datasheet is available at
   https://www.nxp.com/docs/en/data-sheet/PCA9450DS.pdf
 
+  Support PF9453, Datasheet is available at
+  https://www.nxp.com/docs/en/data-sheet/PF9453_SDS.pdf
+
 # The valid names for PCA9450 regulator nodes are:
 # BUCK1, BUCK2, BUCK3, BUCK4, BUCK5, BUCK6,
 # LDO1, LDO2, LDO3, LDO4, LDO5
@@ -30,6 +33,7 @@ properties:
       - nxp,pca9450c
       - nxp,pca9451a
       - nxp,pca9452
+      - nxp,pf9453
 
   reg:
     maxItems: 1
@@ -42,8 +46,30 @@ properties:
     description: |
       list of regulators provided by this controller
 
+    properties:
+      LDO5:
+        type: object
+        $ref: regulator.yaml#
+        description:
+          Properties for single LDO5 regulator.
+
+        properties:
+          nxp,sd-vsel-fixed-low:
+            type: boolean
+            description:
+              Let the driver know that SD_VSEL is hardwired to low level and
+              there is no GPIO to get the actual value from.
+
+          sd-vsel-gpios:
+            description:
+              GPIO that can be used to read the current status of the SD_VSEL
+              signal in order for the driver to know if LDO5CTRL_L or LDO5CTRL_H
+              is used by the hardware.
+
+        unevaluatedProperties: false
+
     patternProperties:
-      "^LDO[1-5]$":
+      "^LDO([1-4]|-SNVS)$":
         type: object
         $ref: regulator.yaml#
         description:
@@ -78,11 +104,6 @@ properties:
 
     additionalProperties: false
 
-  sd-vsel-gpios:
-    description: GPIO that is used to switch LDO5 between being configured by
-      LDO5CTRL_L or LDO5CTRL_H register. Use this if the SD_VSEL signal is
-      connected to a host GPIO.
-
   nxp,i2c-lt-enable:
     type: boolean
     description:
@@ -101,6 +122,24 @@ required:
 
 additionalProperties: false
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: nxp,pf9453
+    then:
+      properties:
+        regulators:
+          patternProperties:
+            "^LDO[3-4]$": false
+            "^BUCK[5-6]$": false
+    else:
+      properties:
+        regulators:
+          properties:
+            LDO-SNVS: false
+
 examples:
   - |
     #include <dt-bindings/interrupt-controller/irq.h>
index 87accc6..022c1f1 100644 (file)
@@ -39,7 +39,7 @@ properties:
 
   interrupts:
     maxItems: 1
-    
+
   richtek,mtp-sel-high:
     type: boolean
     description:
@@ -77,6 +77,7 @@ properties:
 
         properties:
           richtek,fixed-microvolt:
+            deprecated: true
             description: |
               This property can be used to set a fixed operating voltage that lies outside
               the range of the regulator's adjustable mode.
diff --git a/Bindings/regulator/samsung,s2mpu05.yaml b/Bindings/regulator/samsung,s2mpu05.yaml
new file mode 100644 (file)
index 0000000..378518a
--- /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/regulator/samsung,s2mpu05.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Samsung S2MPU05 Power Management IC regulators
+
+maintainers:
+  - Kaustabh Chakraborty <kauschluss@disroot.org>
+
+description: |
+  This is a part of device tree bindings for S2M and S5M family of Power
+  Management IC (PMIC).
+
+  The S2MPU05 provides buck and LDO regulators.
+
+  See also Documentation/devicetree/bindings/mfd/samsung,s2mps11.yaml for
+  additional information and example.
+
+patternProperties:
+  # 21 LDOs
+  "^ldo([1-9]|10|2[5-9]|3[0-5])$":
+    type: object
+    $ref: regulator.yaml#
+    unevaluatedProperties: false
+    description:
+      Properties for single LDO regulator.
+
+      LDOs 11-24 are used for CP, and they're left unimplemented due to lack
+      of documentation on these regulators.
+
+    required:
+      - regulator-name
+
+  # 5 bucks
+  "^buck[1-5]$":
+    type: object
+    $ref: regulator.yaml#
+    unevaluatedProperties: false
+    description:
+      Properties for single buck regulator.
+
+    required:
+      - regulator-name
+
+additionalProperties: false
index 78e6452..7c64e58 100644 (file)
@@ -4,7 +4,7 @@
 $id: http://devicetree.org/schemas/regulator/ti,tps65219.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: TI tps65219 Power Management Integrated Circuit regulators
+title: TI TPS65214/TPS65215/TPS65219 Power Management Integrated Circuit
 
 maintainers:
   - Jerome Neanne <jerome.neanne@baylibre.com>
@@ -12,9 +12,20 @@ maintainers:
 description: |
   Regulator nodes should be named to buck<number> and ldo<number>.
 
+  TI TPS65219 is a Power Management IC with 3 Buck regulators, 4 Low
+  Drop-out Regulators (LDOs), 1 GPIO, 2 GPOs, and power-button.
+
+  TI TPS65215 is a derivative of TPS65219 with 3 Buck regulators, 2 Low
+  Drop-out Regulators (LDOs), 1 GPIO, 1 GPO, and power-button.
+
+  TI TPS65214 is a derivative of TPS65219 with 3 Buck regulators, 2 Low
+  Drop-out Regulators (LDOs), 1 GPIO, 1 GPO, and power-button.
+
 properties:
   compatible:
     enum:
+      - ti,tps65214
+      - ti,tps65215
       - ti,tps65219
 
   reg:
@@ -90,6 +101,20 @@ required:
 
 additionalProperties: false
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - ti,tps65214
+              - ti,tps65215
+    then:
+      properties:
+        regulators:
+          patternProperties:
+            "^ldo[3-4]$": false
+
 examples:
   - |
     #include <dt-bindings/interrupt-controller/arm-gic.h>
index 588b010..c179b56 100644 (file)
@@ -17,8 +17,10 @@ properties:
   compatible:
     oneOf:
       - enum:
+          - qcom,msm8226-mss-pil
           - qcom,msm8909-mss-pil
           - qcom,msm8916-mss-pil
+          - qcom,msm8926-mss-pil
           - qcom,msm8953-mss-pil
           - qcom,msm8974-mss-pil
 
@@ -70,16 +72,18 @@ properties:
     items:
       - description: CX proxy power domain (control handed over after startup)
       - description: MX proxy power domain (control handed over after startup)
+                     (not valid for qcom,msm8226-mss-pil, qcom,msm8926-mss-pil
+                     and qcom,msm8974-mss-pil)
       - description: MSS proxy power domain (control handed over after startup)
                      (only valid for qcom,msm8953-mss-pil)
-    minItems: 2
+    minItems: 1
 
   power-domain-names:
     items:
       - const: cx
-      - const: mx
+      - const: mx # not valid for qcom,msm8226-mss-pil, qcom-msm8926-mss-pil and qcom,msm8974-mss-pil
       - const: mss # only valid for qcom,msm8953-mss-pil
-    minItems: 2
+    minItems: 1
 
   pll-supply:
     description: PLL proxy supply (control handed over after startup)
@@ -106,6 +110,15 @@ properties:
     items:
       - const: stop
 
+  qcom,ext-bhs-reg:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description: External power block headswitch (BHS) register
+                 (only valid for qcom,msm8226-mss-pil)
+    items:
+      - items:
+          - description: phandle to external BHS syscon region
+          - description: offset to the external BHS register
+
   qcom,halt-regs:
     $ref: /schemas/types.yaml#/definitions/phandle-array
     description:
@@ -207,17 +220,58 @@ allOf:
       required:
         - power-domains
         - power-domain-names
-    else:
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,msm8909-mss-pil
+              - qcom,msm8916-mss-pil
+    then:
       properties:
         power-domains:
+          minItems: 2
           maxItems: 2
         power-domain-names:
+          minItems: 2
           maxItems: 2
 
   - if:
       properties:
         compatible:
-          const: qcom,msm8974-mss-pil
+          contains:
+            enum:
+              - qcom,msm8226-mss-pil
+              - qcom,msm8926-mss-pil
+              - qcom,msm8974-mss-pil
+    then:
+      properties:
+        power-domains:
+          maxItems: 1
+        power-domain-names:
+          maxItems: 1
+      required:
+        - mx-supply
+
+  - if:
+      properties:
+        compatible:
+          const: qcom,msm8226-mss-pil
+    then:
+      required:
+        - qcom,ext-bhs-reg
+    else:
+      properties:
+        qcom,ext-bhs-reg: false
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,msm8926-mss-pil
+              - qcom,msm8974-mss-pil
     then:
       required:
         - mss-supply
diff --git a/Bindings/remoteproc/qcom,sc8180x-pas.yaml b/Bindings/remoteproc/qcom,sc8180x-pas.yaml
deleted file mode 100644 (file)
index 45ee9fb..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/remoteproc/qcom,sc8180x-pas.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Qualcomm SC8180X Peripheral Authentication Service
-
-maintainers:
-  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
-
-description:
-  Qualcomm SC8180X SoC Peripheral Authentication Service loads and boots
-  firmware on the Qualcomm DSP Hexagon cores.
-
-properties:
-  compatible:
-    enum:
-      - qcom,sc8180x-adsp-pas
-      - qcom,sc8180x-cdsp-pas
-      - qcom,sc8180x-mpss-pas
-
-  reg:
-    maxItems: 1
-
-  clocks:
-    items:
-      - description: XO clock
-
-  clock-names:
-    items:
-      - const: xo
-
-  qcom,qmp:
-    $ref: /schemas/types.yaml#/definitions/phandle
-    description: Reference to the AOSS side-channel message RAM.
-
-  smd-edge: false
-
-  memory-region:
-    maxItems: 1
-    description: Reference to the reserved-memory for the Hexagon core
-
-  firmware-name:
-    maxItems: 1
-    description: Firmware name for the Hexagon core
-
-required:
-  - compatible
-  - reg
-  - memory-region
-
-allOf:
-  - $ref: /schemas/remoteproc/qcom,pas-common.yaml#
-  - if:
-      properties:
-        compatible:
-          enum:
-            - qcom,sc8180x-adsp-pas
-            - qcom,sc8180x-cdsp-pas
-    then:
-      properties:
-        interrupts:
-          maxItems: 5
-        interrupt-names:
-          maxItems: 5
-    else:
-      properties:
-        interrupts:
-          minItems: 6
-        interrupt-names:
-          minItems: 6
-
-  - if:
-      properties:
-        compatible:
-          enum:
-            - qcom,sc8180x-adsp-pas
-            - qcom,sc8180x-cdsp-pas
-    then:
-      properties:
-        power-domains:
-          items:
-            - description: LCX power domain
-            - description: LMX power domain
-        power-domain-names:
-          items:
-            - const: lcx
-            - const: lmx
-    else:
-      properties:
-        # TODO: incomplete
-        power-domains: false
-        power-domain-names: false
-
-unevaluatedProperties: false
index 059cb87..eeb6a8a 100644 (file)
@@ -127,7 +127,7 @@ examples:
         clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>;
         clock-names = "xo";
 
-        firmware-name = "qcom/sm6115/adsp.mdt";
+        firmware-name = "qcom/sm6115/adsp.mbn";
 
         interrupts-extended = <&intc GIC_SPI 282 IRQ_TYPE_EDGE_RISING>,
                               <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
index d67386c..56ff638 100644 (file)
@@ -60,6 +60,9 @@ allOf:
       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-slpi-pas
@@ -83,6 +86,8 @@ allOf:
       properties:
         compatible:
           enum:
+            - qcom,sc8180x-adsp-pas
+            - qcom,sc8180x-cdsp-pas
             - qcom,sm8150-adsp-pas
             - qcom,sm8150-cdsp-pas
             - qcom,sm8250-cdsp-pas
@@ -99,6 +104,7 @@ allOf:
       properties:
         compatible:
           enum:
+            - qcom,sc8180x-mpss-pas
             - qcom,sm8150-mpss-pas
     then:
       properties:
@@ -115,6 +121,7 @@ allOf:
       properties:
         compatible:
           enum:
+            - qcom,sc8180x-slpi-pas
             - qcom,sm8150-slpi-pas
             - qcom,sm8250-adsp-pas
             - qcom,sm8250-slpi-pas
index a24cbb6..2dd479c 100644 (file)
@@ -24,11 +24,15 @@ properties:
           - qcom,sm8650-adsp-pas
           - qcom,sm8650-cdsp-pas
           - qcom,sm8650-mpss-pas
+          - qcom,sm8750-mpss-pas
           - qcom,x1e80100-adsp-pas
           - qcom,x1e80100-cdsp-pas
       - items:
           - const: qcom,sm8750-adsp-pas
           - const: qcom,sm8550-adsp-pas
+      - items:
+          - const: qcom,sm8750-cdsp-pas
+          - const: qcom,sm8650-cdsp-pas
 
   reg:
     maxItems: 1
@@ -114,6 +118,23 @@ allOf:
         memory-region:
           minItems: 3
           maxItems: 3
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,sm8750-cdsp-pas
+    then:
+      properties:
+        interrupts:
+          maxItems: 6
+        interrupt-names:
+          maxItems: 6
+        memory-region:
+          minItems: 3
+          maxItems: 3
+
   - if:
       properties:
         compatible:
@@ -144,6 +165,21 @@ allOf:
           minItems: 5
           maxItems: 5
 
+  - if:
+      properties:
+        compatible:
+          enum:
+            - qcom,sm8750-mpss-pas
+    then:
+      properties:
+        interrupts:
+          minItems: 6
+        interrupt-names:
+          minItems: 6
+        memory-region:
+          minItems: 4
+          maxItems: 4
+
   - if:
       properties:
         compatible:
@@ -171,6 +207,7 @@ allOf:
             - qcom,sdx75-mpss-pas
             - qcom,sm8550-mpss-pas
             - qcom,sm8650-mpss-pas
+            - qcom,sm8750-mpss-pas
     then:
       properties:
         power-domains:
@@ -184,10 +221,11 @@ allOf:
   - if:
       properties:
         compatible:
-          enum:
-            - qcom,sm8550-cdsp-pas
-            - qcom,sm8650-cdsp-pas
-            - qcom,x1e80100-cdsp-pas
+          contains:
+            enum:
+              - qcom,sm8550-cdsp-pas
+              - qcom,sm8650-cdsp-pas
+              - qcom,x1e80100-cdsp-pas
     then:
       properties:
         power-domains:
index 8e033b2..117fb4d 100644 (file)
@@ -69,9 +69,11 @@ properties:
       CX regulator to be held on behalf of the booting of the WCNSS core.
 
   power-domains:
+    minItems: 1
     maxItems: 2
 
   power-domain-names:
+    minItems: 1
     items:
       - const: cx
       - const: mx
@@ -187,22 +189,43 @@ allOf:
               - qcom,pronto-v1-pil
               - qcom,pronto-v2-pil
     then:
-      properties:
-        vddmx-supply:
-          deprecated: true
-          description: Deprecated for qcom,pronto-v1/2-pil
-
-        vddcx-supply:
-          deprecated: true
-          description: Deprecated for qcom,pronto-v1/2-pil
-
+      # CX and MX must be present either as power domains or regulators
       oneOf:
+        # Both CX and MX represented as power domains
         - required:
             - power-domains
             - power-domain-names
+          properties:
+            power-domains:
+              minItems: 2
+            power-domain-names:
+              minItems: 2
+            vddmx-supply: false
+            vddcx-supply: false
+        # CX represented as power domain, MX as regulator
+        - required:
+            - power-domains
+            - power-domain-names
+            - vddmx-supply
+          properties:
+            power-domains:
+              maxItems: 1
+            power-domain-names:
+              maxItems: 1
+            vddcx-supply: false
+        # Both CX and MX represented as regulators
         - required:
             - vddmx-supply
             - vddcx-supply
+          properties:
+            power-domains: false
+            power-domain-names: false
+            vddmx-supply:
+              deprecated: true
+              description: Deprecated for qcom,pronto-v1/2-pil
+            vddcx-supply:
+              deprecated: true
+              description: Deprecated for qcom,pronto-v1/2-pil
 
   - if:
       properties:
@@ -212,6 +235,10 @@ allOf:
               - qcom,pronto-v3-pil
     then:
       properties:
+        power-domains:
+          minItems: 2
+        power-domain-names:
+          minItems: 2
         vddmx-supply: false
         vddcx-supply: false
 
index 98465d2..c3b33bb 100644 (file)
@@ -26,6 +26,10 @@ properties:
       - items:
           - const: atmel,sama5d3-rstc
           - const: atmel,at91sam9g45-rstc
+      - items:
+          - enum:
+              - microchip,sam9x7-rstc
+          - const: microchip,sam9x60-rstc
 
   reg:
     minItems: 1
index 1f1b42d..1db85fc 100644 (file)
@@ -7,7 +7,6 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Zynq UltraScale+ MPSoC and Versal reset
 
 maintainers:
-  - Mubin Sayyed <mubin.sayyed@amd.com>
   - Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
 
 description: |
index a63b994..bcab59e 100644 (file)
@@ -224,6 +224,12 @@ properties:
             as ratified at commit 4a69197e5617 ("Update to ratified state") of
             riscv-svvptc.
 
+        - const: zaamo
+          description: |
+            The standard Zaamo extension for atomic memory operations as
+            ratified at commit e87412e621f1 ("integrate Zaamo and Zalrsc text
+            (#1304)") of the unprivileged ISA specification.
+
         - const: zabha
           description: |
             The Zabha extension for Byte and Halfword Atomic Memory Operations
@@ -236,6 +242,12 @@ properties:
             is supported as ratified at commit 5059e0ca641c ("update to
             ratified") of the riscv-zacas.
 
+        - const: zalrsc
+          description: |
+            The standard Zalrsc extension for load-reserved/store-conditional as
+            ratified at commit e87412e621f1 ("integrate Zaamo and Zalrsc text
+            (#1304)") of the unprivileged ISA specification.
+
         - const: zawrs
           description: |
             The Zawrs extension for entering a low-power state or for trapping
@@ -329,6 +341,12 @@ properties:
             instructions, as ratified in commit 056b6ff ("Zfa is ratified") of
             riscv-isa-manual.
 
+        - const: zfbfmin
+          description:
+            The standard Zfbfmin extension which provides minimal support for
+            16-bit half-precision brain floating-point instructions, as ratified
+            in commit 4dc23d62 ("Added Chapter title to BF16") of riscv-isa-manual.
+
         - const: zfh
           description:
             The standard Zfh extension for 16-bit half-precision binary
@@ -525,6 +543,18 @@ properties:
             in commit 6f702a2 ("Vector extensions are now ratified") of
             riscv-v-spec.
 
+        - const: zvfbfmin
+          description:
+            The standard Zvfbfmin extension for minimal support for vectored
+            16-bit half-precision brain floating-point instructions, as ratified
+            in commit 4dc23d62 ("Added Chapter title to BF16") of riscv-isa-manual.
+
+        - const: zvfbfwma
+          description:
+            The standard Zvfbfwma extension for vectored half-precision brain
+            floating-point widening multiply-accumulate instructions, as ratified
+            in commit 4dc23d62 ("Added Chapter title to BF16") of riscv-isa-manual.
+
         - const: zvfh
           description:
             The standard Zvfh extension for vectored half-precision
@@ -639,6 +669,12 @@ properties:
             https://github.com/T-head-Semi/thead-extension-spec/blob/95358cb2cca9489361c61d335e03d3134b14133f/xtheadvector.adoc.
 
     allOf:
+      - if:
+          contains:
+            const: d
+        then:
+          contains:
+            const: f
       # Zcb depends on Zca
       - if:
           contains:
@@ -673,6 +709,119 @@ properties:
         then:
           contains:
             const: zca
+      # Zfbfmin depends on F
+      - if:
+          contains:
+            const: zfbfmin
+        then:
+          contains:
+            const: f
+      # Zvfbfmin depends on V or Zve32f
+      - if:
+          contains:
+            const: zvfbfmin
+        then:
+          oneOf:
+            - contains:
+                const: v
+            - contains:
+                const: zve32f
+      # Zvfbfwma depends on Zfbfmin and Zvfbfmin
+      - if:
+          contains:
+            const: zvfbfwma
+        then:
+          allOf:
+            - contains:
+                const: zfbfmin
+            - contains:
+                const: zvfbfmin
+      # Zacas depends on Zaamo
+      - if:
+          contains:
+            const: zacas
+        then:
+          contains:
+            const: zaamo
+
+      - if:
+          contains:
+            const: zve32x
+        then:
+          contains:
+            const: zicsr
+
+      - if:
+          contains:
+            const: zve32f
+        then:
+          allOf:
+            - contains:
+                const: f
+            - contains:
+                const: zve32x
+
+      - if:
+          contains:
+            const: zve64x
+        then:
+          contains:
+            const: zve32x
+
+      - if:
+          contains:
+            const: zve64f
+        then:
+          allOf:
+            - contains:
+                const: f
+            - contains:
+                const: zve32f
+            - contains:
+                const: zve64x
+
+      - if:
+          contains:
+            const: zve64d
+        then:
+          allOf:
+            - contains:
+                const: d
+            - contains:
+                const: zve64f
+
+      - if:
+          contains:
+            anyOf:
+              - const: zvbc
+              - const: zvkn
+              - const: zvknc
+              - const: zvkng
+              - const: zvknhb
+              - const: zvksc
+        then:
+          contains:
+            anyOf:
+              - const: v
+              - const: zve64x
+
+      - if:
+          contains:
+            anyOf:
+              - const: zvbb
+              - const: zvkb
+              - const: zvkg
+              - const: zvkned
+              - const: zvknha
+              - const: zvksed
+              - const: zvksh
+              - const: zvks
+              - const: zvkt
+        then:
+          contains:
+            anyOf:
+              - const: v
+              - const: zve32x
 
 allOf:
   # Zcf extension does not exist on rv64
index 52e5507..077b94f 100644 (file)
@@ -21,6 +21,7 @@ properties:
       - items:
           - enum:
               - bananapi,bpi-f3
+              - milkv,jupiter
           - const: spacemit,k1
 
 additionalProperties: true
diff --git a/Bindings/rng/rockchip,rk3588-rng.yaml b/Bindings/rng/rockchip,rk3588-rng.yaml
new file mode 100644 (file)
index 0000000..ca71b40
--- /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/rng/rockchip,rk3588-rng.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip RK3588 TRNG
+
+description: True Random Number Generator on Rockchip RK3588 SoC
+
+maintainers:
+  - Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
+
+properties:
+  compatible:
+    enum:
+      - rockchip,rk3588-rng
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: TRNG AHB clock
+
+  interrupts:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #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/reset/rockchip,rk3588-cru.h>
+    bus {
+      #address-cells = <2>;
+      #size-cells = <2>;
+
+      rng@fe378000 {
+        compatible = "rockchip,rk3588-rng";
+        reg = <0x0 0xfe378000 0x0 0x200>;
+        interrupts = <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH 0>;
+        clocks = <&scmi_clk SCMI_HCLK_SECURE_NS>;
+        resets = <&scmi_reset SCMI_SRST_H_TRNG_NS>;
+      };
+    };
+
+...
index 0125cf6..bce7558 100644 (file)
@@ -18,7 +18,9 @@ allOf:
 
 properties:
   compatible:
-    const: adi,max31335
+    enum:
+      - adi,max31331
+      - adi,max31335
 
   reg:
     maxItems: 1
index 2d9fe5a..11fcf0c 100644 (file)
@@ -8,6 +8,7 @@ title: NXP PCF2127 Real Time Clock
 
 allOf:
   - $ref: rtc.yaml#
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
 
 maintainers:
   - Alexandre Belloni <alexandre.belloni@bootlin.com>
@@ -34,7 +35,7 @@ required:
   - compatible
   - reg
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
index d274bb7..68ef320 100644 (file)
@@ -50,6 +50,11 @@ properties:
     items:
       - const: offset
 
+  qcom,no-alarm:
+    type: boolean
+    description:
+      RTC alarm is not owned by the OS
+
   wakeup-source: true
 
 required:
index 0bde237..dc0d529 100644 (file)
@@ -77,7 +77,6 @@ properties:
               - altr,16550-FIFO64
               - altr,16550-FIFO128
               - fsl,16550-FIFO64
-              - fsl,ns16550
               - andestech,uart16550
               - nxp,lpc1850-uart
               - opencores,uart16550-rtlsvn105
@@ -86,6 +85,7 @@ properties:
       - items:
           - enum:
               - ns16750
+              - fsl,ns16550
               - cavium,octeon-3860-uart
               - xlnx,xps-uart16550-2.00.b
               - ralink,rt2880-uart
index 3f9ace8..c42261b 100644 (file)
@@ -30,6 +30,7 @@ properties:
       - items:
           - enum:
               - fsl,imx93-lpuart
+              - fsl,imx94-lpuart
               - fsl,imx95-lpuart
           - const: fsl,imx8ulp-lpuart
           - const: fsl,imx7ulp-lpuart
diff --git a/Bindings/serial/nvidia,tegra264-utc.yaml b/Bindings/serial/nvidia,tegra264-utc.yaml
new file mode 100644 (file)
index 0000000..572cc57
--- /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/serial/nvidia,tegra264-utc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NVIDIA Tegra UTC (UART Trace Controller) client
+
+maintainers:
+  - Kartik Rajput <kkartik@nvidia.com>
+  - Thierry Reding <thierry.reding@gmail.com>
+  - Jonathan Hunter <jonathanh@nvidia.com>
+
+description:
+  Represents a client interface of the Tegra UTC (UART Trace Controller). The
+  Tegra UTC allows multiple clients within the Tegra SoC to share a physical
+  UART interface. It supports up to 16 clients. Each client operates as an
+  independent UART endpoint with a dedicated interrupt and 128-character TX/RX
+  FIFOs.
+
+  The Tegra UTC clients use 8-N-1 configuration and operates on a baudrate
+  configured by the bootloader at the controller level.
+
+allOf:
+  - $ref: serial.yaml#
+
+properties:
+  compatible:
+    const: nvidia,tegra264-utc
+
+  reg:
+    items:
+      - description: TX region.
+      - description: RX region.
+
+  reg-names:
+    items:
+      - const: tx
+      - const: rx
+
+  interrupts:
+    maxItems: 1
+
+  tx-threshold:
+    minimum: 1
+    maximum: 128
+
+  rx-threshold:
+    minimum: 1
+    maximum: 128
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts
+  - tx-threshold
+  - rx-threshold
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    tegra_utc: serial@c4e0000 {
+        compatible = "nvidia,tegra264-utc";
+        reg = <0xc4e0000 0x8000>, <0xc4e8000 0x8000>;
+        reg-names = "tx", "rx";
+        interrupts = <GIC_SPI 514 IRQ_TYPE_LEVEL_HIGH>;
+        tx-threshold = <4>;
+        rx-threshold = <4>;
+    };
index 9571041..3fcf2d0 100644 (file)
@@ -92,6 +92,9 @@ properties:
       3000ms.
     default: 3000
 
+  power-domains:
+    maxItems: 1
+
   resets:
     maxItems: 1
 
index 070eba9..83d9986 100644 (file)
@@ -42,6 +42,10 @@ properties:
               - samsung,exynosautov9-uart
               - samsung,exynosautov920-uart
           - const: samsung,exynos850-uart
+      - items:
+          - enum:
+              - samsung,exynos7870-uart
+          - const: samsung,exynos8895-uart
 
   reg:
     maxItems: 1
index 1c163cb..1aa3480 100644 (file)
@@ -13,6 +13,20 @@ allOf:
   - $ref: serial.yaml#
   - $ref: rs485.yaml#
 
+  - if:
+      properties:
+        compatible:
+          items:
+            - enum:
+                - renesas,r9a06g032-uart
+                - renesas,r9a06g033-uart
+            - const: renesas,rzn1-uart
+            - const: snps,dw-apb-uart
+    then:
+      properties:
+        dmas: false
+        dma-names: false
+
   - if:
       properties:
         compatible:
@@ -30,6 +44,12 @@ allOf:
 properties:
   compatible:
     oneOf:
+      - items:
+          - enum:
+              - renesas,r9a06g032-uart
+              - renesas,r9a06g033-uart
+          - const: renesas,rzn1-uart
+          - const: snps,dw-apb-uart
       - items:
           - enum:
               - renesas,r9a06g032-uart
@@ -51,6 +71,7 @@ properties:
               - rockchip,rk3368-uart
               - rockchip,rk3399-uart
               - rockchip,rk3528-uart
+              - rockchip,rk3562-uart
               - rockchip,rk3568-uart
               - rockchip,rk3576-uart
               - rockchip,rk3588-uart
index a2a5056..5bf2656 100644 (file)
@@ -17,13 +17,18 @@ properties:
     oneOf:
       - items:
           - enum:
-              - sprd,sc9632-uart
+              - sprd,ums9632-uart
+          - const: sprd,sc9632-uart
+      - items:
+          - enum:
               - sprd,sc9860-uart
               - sprd,sc9863a-uart
               - sprd,ums512-uart
               - sprd,ums9620-uart
           - const: sprd,sc9836-uart
-      - const: sprd,sc9836-uart
+      - enum:
+          - sprd,sc9632-uart
+          - sprd,sc9836-uart
 
   reg:
     maxItems: 1
index 31295be..234089b 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Freescale Layerscape Reset Registers Module
 
 maintainers:
-  - Frank Li
+  - Frank Li <Frank.Li@nxp.com>
 
 description:
   Reset Module includes chip reset, service processor control and Reset Control
index 80d9986..70a4af6 100644 (file)
@@ -22,6 +22,9 @@ select:
   required:
     - compatible
 
+allOf:
+  - $ref: /schemas/simple-bus.yaml#
+
 properties:
   compatible:
     items:
@@ -35,7 +38,7 @@ required:
   - compatible
   - reg
 
-additionalProperties: true
+unevaluatedProperties: false
 
 examples:
   - |
index 7b031ef..54cd585 100644 (file)
@@ -54,6 +54,10 @@ properties:
 
   dma-coherent: true
 
+  firmware-name:
+    maxItems: 1
+    description: Specify the name of the QUP firmware to load.
+
 required:
   - compatible
   - reg
@@ -135,6 +139,7 @@ examples:
             #address-cells = <2>;
             #size-cells = <2>;
             ranges;
+            firmware-name = "qcom/sa8775p/qupv3fw.elf";
 
             i2c0: i2c@a94000 {
                 compatible = "qcom,geni-i2c";
index 2d3fe0b..4c9e78f 100644 (file)
@@ -38,6 +38,7 @@ properties:
       - items:
           - enum:
               - qcom,sm8650-pmic-glink
+              - qcom,sm8750-pmic-glink
               - qcom,x1e80100-pmic-glink
           - const: qcom,sm8550-pmic-glink
           - const: qcom,pmic-glink
index ebbf0c9..e0f7503 100644 (file)
@@ -22,7 +22,10 @@ description: |
 
 properties:
   compatible:
-    const: renesas,r9a09g057-sys
+    items:
+      - enum:
+          - renesas,r9a09g047-sys # RZ/G3E
+          - renesas,r9a09g057-sys # RZ/V2H
 
   reg:
     maxItems: 1
index 225c0f0..51a4c48 100644 (file)
@@ -493,6 +493,13 @@ properties:
               - renesas,r9a07g044l2 # Dual Cortex-A55 RZ/G2L
           - const: renesas,r9a07g044
 
+      - items:
+          - enum:
+              # MYIR Remi Pi SBC (MYB-YG2LX-REMI)
+              - myir,remi-pi
+          - const: renesas,r9a07g044l2
+          - const: renesas,r9a07g044
+
       - description: RZ/V2L (R9A07G054)
         items:
           - enum:
@@ -552,6 +559,15 @@ properties:
               - renesas,r9a09g057h41 # RZ/V2H
               - renesas,r9a09g057h42 # RZ/V2H with Mali-G31 support
               - renesas,r9a09g057h44 # RZ/V2HP with Mali-G31 + Mali-C55 support
+              - renesas,r9a09g057h45 # RZ/V2H with cryptographic extension support
+              - renesas,r9a09g057h46 # RZ/V2H with Mali-G31 + cryptographic extension support
+              - renesas,r9a09g057h48 # RZ/V2HP with Mali-G31 + Mali-C55 + cryptographic extension support
+          - const: renesas,r9a09g057
+
+      - description: Yuridenki-Shokai RZ/V2H Kakip
+        items:
+          - const: yuridenki,kakip
+          - const: renesas,r9a09g057h48
           - const: renesas,r9a09g057
 
 additionalProperties: true
index 61f38b6..2f61c1b 100644 (file)
@@ -15,6 +15,9 @@ properties:
       - items:
           - enum:
               - rockchip,rk3288-sgrf
+              - rockchip,rk3528-ioc-grf
+              - rockchip,rk3528-vo-grf
+              - rockchip,rk3528-vpu-grf
               - rockchip,rk3566-pipe-grf
               - rockchip,rk3568-pcie3-phy-grf
               - rockchip,rk3568-pipe-grf
index 8e6d051..204da6f 100644 (file)
@@ -52,6 +52,8 @@ properties:
           - const: syscon
       - items:
           - enum:
+              - samsung,exynos2200-pmu
+              - samsung,exynos7870-pmu
               - samsung,exynos7885-pmu
               - samsung,exynos8895-pmu
               - samsung,exynos9810-pmu
index 5b04693..cb22637 100644 (file)
@@ -11,11 +11,21 @@ maintainers:
   - Krzysztof Kozlowski <krzk@kernel.org>
 
 description: |
-  USI IP-core provides selectable serial protocol (UART, SPI or High-Speed I2C).
-  USI shares almost all internal circuits within each protocol, so only one
-  protocol can be chosen at a time. USI is modeled as a node with zero or more
-  child nodes, each representing a serial sub-node device. The mode setting
-  selects which particular function will be used.
+  The USI IP-core provides configurable support for serial protocols, enabling
+  different serial communication modes depending on the version.
+
+  In USIv1, configurations are available to enable either one or two protocols
+  simultaneously in select combinations - High-Speed I2C0, High-Speed
+  I2C1, SPI, UART, High-Speed I2C0 and I2C1 or both High-Speed
+  I2C1 and UART.
+
+  In USIv2, only one protocol can be active at a time, either UART, SPI, or
+  High-Speed I2C.
+
+  The USI core shares internal circuits across protocols, meaning only the
+  selected configuration is active at any given time. USI is modeled as a node
+  with zero or more child nodes, each representing a serial sub-node device. The
+  mode setting selects which particular function will be used.
 
 properties:
   $nodename:
@@ -31,6 +41,7 @@ properties:
           - const: samsung,exynos850-usi
       - enum:
           - samsung,exynos850-usi
+          - samsung,exynos8895-usi
 
   reg:
     maxItems: 1
@@ -64,7 +75,7 @@ properties:
 
   samsung,mode:
     $ref: /schemas/types.yaml#/definitions/uint32
-    enum: [0, 1, 2, 3]
+    enum: [0, 1, 2, 3, 4, 5, 6]
     description:
       Selects USI function (which serial protocol to use). Refer to
       <include/dt-bindings/soc/samsung,exynos-usi.h> for valid USI mode values.
@@ -101,37 +112,59 @@ required:
   - samsung,sysreg
   - samsung,mode
 
-if:
-  properties:
-    compatible:
-      contains:
-        enum:
-          - samsung,exynos850-usi
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - samsung,exynos850-usi
+
+    then:
+      properties:
+        reg:
+          maxItems: 1
+
+        clocks:
+          items:
+            - description: Bus (APB) clock
+            - description: Operating clock for UART/SPI/I2C protocol
 
-then:
-  properties:
-    reg:
-      maxItems: 1
+        clock-names:
+          maxItems: 2
 
-    clocks:
-      items:
-        - description: Bus (APB) clock
-        - description: Operating clock for UART/SPI/I2C protocol
+        samsung,mode:
+          enum: [0, 1, 2, 3]
 
-    clock-names:
-      maxItems: 2
+      required:
+        - reg
+        - clocks
+        - clock-names
 
-  required:
-    - reg
-    - clocks
-    - clock-names
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - samsung,exynos8895-usi
 
-else:
-  properties:
-    reg: false
-    clocks: false
-    clock-names: false
-    samsung,clkreq-on: false
+    then:
+      properties:
+        reg: false
+
+        clocks:
+          items:
+            - description: Bus (APB) clock
+            - description: Operating clock for UART/SPI protocol
+
+        clock-names:
+          maxItems: 2
+
+        samsung,clkreq-on: false
+
+      required:
+        - clocks
+        - clock-names
 
 additionalProperties: false
 
@@ -144,7 +177,7 @@ examples:
         compatible = "samsung,exynos850-usi";
         reg = <0x138200c0 0x20>;
         samsung,sysreg = <&sysreg_peri 0x1010>;
-        samsung,mode = <USI_V2_UART>;
+        samsung,mode = <USI_MODE_UART>;
         samsung,clkreq-on; /* needed for UART mode */
         #address-cells = <1>;
         #size-cells = <1>;
@@ -158,7 +191,6 @@ examples:
             interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
             clocks = <&cmu_peri 32>, <&cmu_peri 31>;
             clock-names = "uart", "clk_uart_baud0";
-            status = "disabled";
         };
 
         hsi2c_0: i2c@13820000 {
index a75aef2..d27ed6c 100644 (file)
@@ -18,6 +18,11 @@ properties:
               - google,gs101-hsi2-sysreg
               - google,gs101-peric0-sysreg
               - google,gs101-peric1-sysreg
+              - samsung,exynos2200-cmgp-sysreg
+              - samsung,exynos2200-peric0-sysreg
+              - samsung,exynos2200-peric1-sysreg
+              - samsung,exynos2200-peric2-sysreg
+              - samsung,exynos2200-ufs-sysreg
               - samsung,exynos3-sysreg
               - samsung,exynos4-sysreg
               - samsung,exynos5-sysreg
index 131aba5..fb5c39c 100644 (file)
@@ -9,8 +9,8 @@ title: Xilinx Zynq Platforms
 maintainers:
   - Michal Simek <michal.simek@amd.com>
 
-description: |
-  Xilinx boards with Zynq-7000 SOC or Zynq UltraScale+ MPSoC
+description:
+  AMD/Xilinx boards with ARM 32/64bits cores
 
 properties:
   $nodename:
@@ -187,6 +187,13 @@ properties:
           - const: qemu,mbv
           - const: amd,mbv
 
+      - description: Xilinx Versal NET VN-X revA platform
+        items:
+          enum:
+            - xlnx,versal-net-vnx-revA
+            - xlnx,versal-net-vnx
+            - xlnx,versal-net
+
 additionalProperties: true
 
 ...
index ccae64c..b4eca70 100644 (file)
@@ -102,6 +102,10 @@ properties:
     maxItems: 1
     description: GPIO to enable the external amplifier
 
+  hp-det-gpios:
+    maxItems: 1
+    description: GPIO for headphone/line-out detection
+
 required:
   - "#sound-dai-cells"
   - compatible
@@ -251,8 +255,10 @@ allOf:
         allwinner,audio-routing:
           items:
             enum:
+              - Headphone
               - LINEOUT
               - Line Out
+              - Speaker
 
         dmas:
           items:
diff --git a/Bindings/sound/atmel,at91-ssc.yaml b/Bindings/sound/atmel,at91-ssc.yaml
new file mode 100644 (file)
index 0000000..a05e614
--- /dev/null
@@ -0,0 +1,104 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/atmel,at91-ssc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Atmel Serial Synchronous Serial (SSC)
+
+maintainers:
+  - Andrei Simion <andrei.simion@microchip.com>
+
+description:
+  The Atmel Synchronous Serial Controller (SSC) provides a versatile
+  synchronous communication link for audio and telecom applications,
+  supporting protocols like I2S, Short Frame Sync, and Long Frame Sync.
+
+properties:
+  compatible:
+    enum:
+      - atmel,at91rm9200-ssc
+      - atmel,at91sam9g45-ssc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: pclk
+
+  dmas:
+    items:
+      - description: TX DMA Channel
+      - description: RX DMA Channel
+
+  dma-names:
+    items:
+      - const: tx
+      - const: rx
+
+  atmel,clk-from-rk-pin:
+    description:
+      Specify the clock source for the SSC (Synchronous Serial Controller)
+      when operating in slave mode. By default, the clock is sourced from
+      the TK pin.
+    type: boolean
+
+  "#sound-dai-cells":
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+allOf:
+  - $ref: dai-common.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - atmel,at91sam9g45-ssc
+    then:
+      required:
+        - dmas
+        - dma-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/at91.h>
+    #include <dt-bindings/dma/at91.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    ssc@100000 {
+       compatible = "atmel,at91sam9g45-ssc";
+       reg = <0x100000 0x4000>;
+       interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
+       dmas = <&dma0 (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                     AT91_XDMAC_DT_PERID(38))>,
+              <&dma0 (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                     AT91_XDMAC_DT_PERID(39))>;
+       dma-names = "tx", "rx";
+       clocks = <&pmc PMC_TYPE_PERIPHERAL 28>;
+       clock-names = "pclk";
+       #sound-dai-cells = <0>;
+    };
+
+    ssc@c00000 {
+      compatible = "atmel,at91rm9200-ssc";
+      reg = <0xc00000 0x4000>;
+      interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
+      clocks = <&pmc PMC_TYPE_PERIPHERAL 14>;
+      clock-names = "pclk";
+    };
diff --git a/Bindings/sound/atmel,at91sam9g20ek-wm8731.yaml b/Bindings/sound/atmel,at91sam9g20ek-wm8731.yaml
new file mode 100644 (file)
index 0000000..627da2d
--- /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/sound/atmel,at91sam9g20ek-wm8731.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Atmel at91sam9g20ek wm8731 audio complex
+
+maintainers:
+  - Balakrishnan Sambath <balakrishnan.s@microchip.com>
+
+description:
+  The audio complex configuration for Atmel at91sam9g20ek with WM8731 audio codec.
+
+properties:
+  compatible:
+    const: atmel,at91sam9g20ek-wm8731-audio
+
+  atmel,model:
+    $ref: /schemas/types.yaml#/definitions/string
+    description: The user-visible name of this sound complex.
+
+  atmel,audio-routing:
+    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
+    description: A list of the connections between audio components.
+    minItems: 2
+    maxItems: 4
+    items:
+      enum:
+        # Board Connectors
+        - Ext Spk
+        - Int Mic
+
+        # CODEC Pins
+        - LOUT
+        - ROUT
+        - LHPOUT
+        - RHPOUT
+        - LLINEIN
+        - RLINEIN
+        - MICIN
+
+  atmel,ssc-controller:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: The phandle of the SSC controller.
+
+  atmel,audio-codec:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: The phandle of WM8731 audio codec.
+
+required:
+  - compatible
+  - atmel,model
+  - atmel,audio-routing
+  - atmel,ssc-controller
+  - atmel,audio-codec
+
+additionalProperties: false
+
+examples:
+  - |
+    sound {
+        compatible = "atmel,at91sam9g20ek-wm8731-audio";
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_pck0_as_mck>;
+        atmel,model = "wm8731 @ AT91SAMG20EK";
+        atmel,audio-routing =
+            "Ext Spk", "LHPOUT",
+            "Int Mic", "MICIN";
+        atmel,ssc-controller = <&ssc0>;
+        atmel,audio-codec = <&wm8731>;
+    };
diff --git a/Bindings/sound/atmel-at91sam9g20ek-wm8731-audio.txt b/Bindings/sound/atmel-at91sam9g20ek-wm8731-audio.txt
deleted file mode 100644 (file)
index 9c5a994..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-* Atmel at91sam9g20ek wm8731 audio complex
-
-Required properties:
-  - compatible: "atmel,at91sam9g20ek-wm8731-audio"
-  - atmel,model: The user-visible name of this sound complex.
-  - atmel,audio-routing: A list of the connections between audio components.
-  - atmel,ssc-controller: The phandle of the SSC controller
-  - atmel,audio-codec: The phandle of the WM8731 audio codec
-Optional properties:
-  - pinctrl-names, pinctrl-0: Please refer to pinctrl-bindings.txt
-
-Example:
-sound {
-       compatible = "atmel,at91sam9g20ek-wm8731-audio";
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_pck0_as_mck>;
-
-       atmel,model = "wm8731 @ AT91SAMG20EK";
-
-       atmel,audio-routing =
-               "Ext Spk", "LHPOUT",
-               "Int MIC", "MICIN";
-
-       atmel,ssc-controller = <&ssc0>;
-       atmel,audio-codec = <&wm8731>;
-};
index f943f90..9458835 100644 (file)
@@ -37,6 +37,10 @@ properties:
   codec2codec:
     type: object
     description: Codec to Codec node
+  hp-det-gpios:
+    $ref: audio-graph.yaml#/properties/hp-det-gpios
+  widgets:
+    $ref: audio-graph.yaml#/properties/widgets
 
 required:
   - compatible
index 6676406..bb92d6c 100644 (file)
@@ -19,6 +19,7 @@ properties:
     enum:
       - awinic,aw88081
       - awinic,aw88083
+      - awinic,aw88166
       - awinic,aw88261
       - awinic,aw88395
       - awinic,aw88399
index 59ef0cf..cc3c84d 100644 (file)
@@ -19,6 +19,9 @@ properties:
   '#sound-dai-cells':
     const: 0
 
+  vref-supply:
+    description: Phandle to the digital microphone reference supply
+
   dmicen-gpios:
     description: GPIO specifier for DMIC to control start and stop
     maxItems: 1
index ed18e40..ddddd7b 100644 (file)
@@ -24,9 +24,13 @@ maintainers:
 
 properties:
   compatible:
-    enum:
-      - everest,es8328
-      - everest,es8388
+    oneOf:
+      - enum:
+          - everest,es8328
+      - items:
+          - enum:
+              - everest,es8388
+          - const: everest,es8328
 
   reg:
     maxItems: 1
@@ -56,6 +60,7 @@ properties:
 
 required:
   - compatible
+  - reg
   - clocks
   - DVDD-supply
   - AVDD-supply
index 9413b90..3ad197b 100644 (file)
@@ -61,13 +61,26 @@ properties:
       - description: serial audio input 2
         maxItems: 1
 
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+    patternProperties:
+      '^port@[0-1]':
+        $ref: audio-graph-port.yaml#
+        unevaluatedProperties: false
+        description: Input port from SAI TX
+
+    properties:
+      port@2:
+        $ref: audio-graph-port.yaml#
+        unevaluatedProperties: false
+        description: Output port to SAI RX
+
 required:
   - compatible
   - reg
   - clocks
   - clock-names
   - power-domains
-  - dais
 
 unevaluatedProperties: false
 
@@ -80,4 +93,50 @@ examples:
       clock-names = "ipg";
       power-domains = <&pd_audmix>;
       dais = <&sai4>, <&sai5>;
+
+      ports {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        port@0 {
+          reg = <0>;
+          playback-only;
+
+          amix_endpoint0: endpoint {
+            dai-tdm-slot-num = <8>;
+            dai-tdm-slot-width = <32>;
+            dai-tdm-slot-width-map = <32 8 32>;
+            dai-format = "dsp_a";
+            remote-endpoint = <&be00_ep>;
+          };
+        };
+
+        port@1 {
+          reg = <1>;
+          playback-only;
+
+          amix_endpoint1: endpoint {
+            dai-tdm-slot-num = <8>;
+            dai-tdm-slot-width = <32>;
+            dai-tdm-slot-width-map = <32 8 32>;
+            dai-format = "dsp_a";
+            remote-endpoint = <&be01_ep>;
+          };
+        };
+
+        port@2 {
+          reg = <2>;
+          capture-only;
+
+          amix_endpoint2: endpoint {
+            dai-tdm-slot-num = <8>;
+            dai-tdm-slot-width = <32>;
+            dai-tdm-slot-width-map = <32 8 32>;
+            dai-format = "dsp_a";
+            bitclock-master;
+            frame-master;
+            remote-endpoint = <&be02_ep>;
+          };
+        };
+      };
     };
index c454110..8f1108e 100644 (file)
@@ -80,7 +80,10 @@ required:
   - fsl,asrc-rate
   - fsl,asrc-format
 
-additionalProperties: false
+allOf:
+  - $ref: dai-common.yaml#
+
+unevaluatedProperties: false
 
 examples:
   - |
index 76aa1f2..85799f8 100644 (file)
@@ -77,6 +77,10 @@ properties:
   power-domains:
     maxItems: 1
 
+  port:
+    $ref: audio-graph-port.yaml#
+    unevaluatedProperties: false
+
   fsl,asrc-rate:
     $ref: /schemas/types.yaml#/definitions/uint32
     description: The mutual sample rate used by DPCM Back Ends
@@ -120,6 +124,7 @@ required:
   - fsl,asrc-width
 
 allOf:
+  - $ref: dai-common.yaml#
   - if:
       properties:
         compatible:
@@ -145,7 +150,7 @@ allOf:
       required:
         - power-domains
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
@@ -173,4 +178,12 @@ examples:
                     "txa", "txb", "txc";
         fsl,asrc-rate  = <48000>;
         fsl,asrc-width = <16>;
+
+        port {
+            playback-only;
+
+            asrc_endpoint: endpoint {
+                remote-endpoint = <&fe00_ep>;
+            };
+       };
     };
diff --git a/Bindings/sound/fsl,imx95-cm7-sof.yaml b/Bindings/sound/fsl,imx95-cm7-sof.yaml
new file mode 100644 (file)
index 0000000..f00ae32
--- /dev/null
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/fsl,imx95-cm7-sof.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP imx95 CM7 core
+
+maintainers:
+  - Daniel Baluta <daniel.baluta@nxp.com>
+
+description: NXP imx95 CM7 core used for audio processing
+
+properties:
+  compatible:
+    const: fsl,imx95-cm7-sof
+
+  reg:
+    maxItems: 1
+
+  reg-names:
+    const: sram
+
+  memory-region:
+    maxItems: 1
+
+  memory-region-names:
+    const: dma
+
+  port:
+    description: SAI3 port
+    $ref: audio-graph-port.yaml#
+    unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - memory-region
+  - memory-region-names
+  - port
+
+allOf:
+  - $ref: fsl,sof-cpu.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    cm7-cpu@80000000 {
+        compatible = "fsl,imx95-cm7-sof";
+        reg = <0x80000000 0x6100000>;
+        reg-names = "sram";
+        mboxes = <&mu7 2 0>, <&mu7 2 1>, <&mu7 3 0>, <&mu7 3 1>;
+        mbox-names = "txdb0", "txdb1", "rxdb0", "rxdb1";
+        memory-region = <&adma_res>;
+        memory-region-names = "dma";
+        port {
+            /* SAI3-WM8962 link */
+            endpoint {
+                remote-endpoint = <&wm8962_ep>;
+            };
+        };
+    };
index a5d9c24..0d733e5 100644 (file)
@@ -41,6 +41,10 @@ properties:
               - fsl,imx93-sai
               - fsl,imx95-sai
               - fsl,vf610-sai
+      - items:
+          - enum:
+              - fsl,imx94-sai
+          - const: fsl,imx95-sai
 
   reg:
     maxItems: 1
@@ -93,6 +97,24 @@ properties:
     items:
       - description: receive and transmit interrupt
 
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+    properties:
+      port@0:
+        $ref: audio-graph-port.yaml#
+        unevaluatedProperties: false
+        description: port for TX and RX
+
+      port@1:
+        $ref: audio-graph-port.yaml#
+        unevaluatedProperties: false
+        description: port for TX only
+
+      port@2:
+        $ref: audio-graph-port.yaml#
+        unevaluatedProperties: false
+        description: port for RX only
+
   big-endian:
     description: |
       required if all the SAI registers are big-endian rather than little-endian.
@@ -204,4 +226,37 @@ examples:
         dma-names = "rx", "tx";
         fsl,dataline = <1 0xff 0xff 2 0xff 0x11>;
         #sound-dai-cells = <0>;
+
+        ports {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            port@1 {
+                reg = <1>;
+                playback-only;
+
+                sai1_endpoint0: endpoint {
+                   dai-tdm-slot-num = <8>;
+                   dai-tdm-slot-width = <32>;
+                   dai-tdm-slot-width-map = <32 8 32>;
+                   dai-format = "dsp_a";
+                   bitclock-master;
+                   frame-master;
+                   remote-endpoint = <&mcodec01_ep>;
+                };
+            };
+
+            port@2 {
+                reg = <2>;
+                capture-only;
+
+                sai1_endpoint1: endpoint {
+                    dai-tdm-slot-num = <8>;
+                    dai-tdm-slot-width = <32>;
+                    dai-tdm-slot-width-map = <32 8 32>;
+                    dai-format = "dsp_a";
+                    remote-endpoint = <&fe02_ep>;
+                };
+            };
+        };
     };
diff --git a/Bindings/sound/fsl,sof-cpu.yaml b/Bindings/sound/fsl,sof-cpu.yaml
new file mode 100644 (file)
index 0000000..3186393
--- /dev/null
@@ -0,0 +1,27 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/fsl,sof-cpu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP audio processor common properties
+
+maintainers:
+  - Daniel Baluta <daniel.baluta@nxp.com>
+
+properties:
+  mboxes:
+    maxItems: 4
+
+  mbox-names:
+    items:
+      - const: txdb0
+      - const: txdb1
+      - const: rxdb0
+      - const: rxdb1
+
+required:
+  - mboxes
+  - mbox-names
+
+additionalProperties: true
diff --git a/Bindings/sound/ics43432.txt b/Bindings/sound/ics43432.txt
deleted file mode 100644 (file)
index e6f05f2..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-Invensense ICS-43432-compatible MEMS microphone with I2S output.
-
-There are no software configuration options for this device, indeed, the only
-host connection is the I2S interface. Apart from requirements on clock
-frequency (460 kHz to 3.379 MHz according to the data sheet) there must be
-64 clock cycles in each stereo output frame; 24 of the 32 available bits
-contain audio data. A hardware pin determines if the device outputs data
-on the left or right channel of the I2S frame.
-
-Required properties:
-  - compatible: should be one of the following.
-     "invensense,ics43432": For the Invensense ICS43432
-     "cui,cmm-4030d-261": For the CUI CMM-4030D-261-I2S-TR
-
-Example:
-
-       ics43432: ics43432 {
-               compatible = "invensense,ics43432";
-       };
index f7ad5ea..3c75c8c 100644 (file)
@@ -46,6 +46,14 @@ patternProperties:
         description: see tdm-slot.txt.
         $ref: /schemas/types.yaml#/definitions/uint32
 
+      playback-only:
+        description: link is used only for playback
+        $ref: /schemas/types.yaml#/definitions/flag
+
+      capture-only:
+        description: link is used only for capture
+        $ref: /schemas/types.yaml#/definitions/flag
+
       cpu:
         description: Holds subnode which indicates cpu dai.
         type: object
@@ -71,6 +79,12 @@ patternProperties:
       - link-name
       - cpu
 
+    allOf:
+      - not:
+          required:
+            - playback-only
+            - capture-only
+
     additionalProperties: false
 
 required:
diff --git a/Bindings/sound/invensense,ics43432.yaml b/Bindings/sound/invensense,ics43432.yaml
new file mode 100644 (file)
index 0000000..7bd9848
--- /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/sound/invensense,ics43432.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Invensense ICS-43432-compatible MEMS Microphone with I2S Output
+
+maintainers:
+  - Oleksij Rempel <o.rempel@pengutronix.de>
+
+description:
+  The ICS-43432 and compatible MEMS microphones output audio over an I2S
+  interface and require no software configuration. The only host connection
+  is the I2S bus. The microphone requires an I2S clock frequency between
+  460 kHz and 3.379 MHz and 64 clock cycles per stereo frame. Each frame
+  contains 32-bit slots per channel, with 24 bits carrying audio data.
+  A hardware pin determines whether the microphone outputs audio on the
+  left or right channel of the I2S frame.
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    enum:
+      - invensense,ics43432
+      - cui,cmm-4030d-261
+
+  port:
+    $ref: audio-graph-port.yaml#
+    unevaluatedProperties: false
+
+required:
+  - compatible
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    ics43432: ics43432 {
+        compatible = "invensense,ics43432";
+
+        port {
+          endpoint {
+            remote-endpoint = <&i2s1_endpoint>;
+            dai-format = "i2s";
+          };
+        };
+
+    };
index 362e729..76d5a43 100644 (file)
@@ -40,6 +40,14 @@ properties:
       hardware that provides additional audio functionalities if present.
       The AFE will link to ADSP when the phandle is provided.
 
+  mediatek,accdet:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      The phandle to the MT6359 accessory detection block, which detects audio
+      jack insertion and removal. This property should only be present if the
+      accdet block is actually wired to the audio jack pins and to be used for
+      jack detection.
+
 patternProperties:
   "^dai-link-[0-9]+$":
     type: object
@@ -62,6 +70,7 @@ patternProperties:
             - PCM1_BE
             - DL_SRC_BE
             - UL_SRC_BE
+            - DMIC_BE
 
       codec:
         description: Holds subnode which indicates codec dai.
index 12c31b4..3ca9aff 100644 (file)
@@ -28,6 +28,7 @@ properties:
               - nvidia,tegra186-hda
               - nvidia,tegra210-hda
               - nvidia,tegra124-hda
+              - nvidia,tegra114-hda
           - const: nvidia,tegra30-hda
       - items:
           - const: nvidia,tegra132-hda
index d3cf8f5..c8543f9 100644 (file)
@@ -58,6 +58,40 @@ properties:
     items:
       enum: [1, 2, 3, 4, 5]
 
+  qcom,tx-channel-mapping:
+    description: |
+      Specifies static channel mapping between slave and master tx port
+      channels.
+      In the order of slave port channels which is adc1, adc2, adc3,
+      dmic0, dmic1, mbhc, dmic2, dmic3, dmci4, dmic5, dmic6, dmic7.
+    $ref: /schemas/types.yaml#/definitions/uint8-array
+    minItems: 12
+    maxItems: 12
+    additionalItems: false
+    items:
+      enum:
+        - 1  # WCD9370_SWRM_CH1
+        - 2  # WCD9370_SWRM_CH2
+        - 3  # WCD9370_SWRM_CH3
+        - 4  # WCD9370_SWRM_CH4
+
+  qcom,rx-channel-mapping:
+    description: |
+      Specifies static channels mapping between slave and master rx port
+      channels.
+      In the order of slave port channels, which is
+      hph_l, hph_r, clsh, comp_l, comp_r, lo, dsd_r, dsd_l.
+    $ref: /schemas/types.yaml#/definitions/uint8-array
+    minItems: 8
+    maxItems: 8
+    additionalItems: false
+    items:
+      enum:
+        - 1  # WCD9370_SWRM_CH1
+        - 2  # WCD9370_SWRM_CH2
+        - 3  # WCD9370_SWRM_CH3
+        - 4  # WCD9370_SWRM_CH4
+
 required:
   - compatible
   - reg
@@ -74,6 +108,7 @@ examples:
             compatible = "sdw20217010a00";
             reg = <0 4>;
             qcom,rx-port-mapping = <1 2 3 4 5>;
+            qcom,rx-channel-mapping = /bits/ 8 <1 2 1 1 2 1 1 2>;
         };
     };
 
@@ -85,6 +120,7 @@ examples:
             compatible = "sdw20217010a00";
             reg = <0 3>;
             qcom,tx-port-mapping = <2 2 3 4>;
+            qcom,tx-channel-mapping = /bits/ 8 <1 2 1 1 2 3 3 4 1 2 3 4>;
         };
     };
 
index c3c989e..32dea73 100644 (file)
@@ -31,6 +31,10 @@ properties:
               - rockchip,rk3288-spdif
               - rockchip,rk3308-spdif
           - const: rockchip,rk3066-spdif
+      - items:
+          - enum:
+              - rockchip,rk3588-spdif
+          - const: rockchip,rk3568-spdif
 
   reg:
     maxItems: 1
index 5e7aea4..8eab98a 100644 (file)
@@ -23,6 +23,7 @@ properties:
   compatible:
     enum:
       - ti,tas2770
+      - ti,tas5770l # Apple variant
 
   reg:
     maxItems: 1
index 5447482..fcaae84 100644 (file)
@@ -24,6 +24,7 @@ properties:
     enum:
       - ti,tas2764
       - ti,tas2780
+      - ti,sn012776 # Apple variant of TAS2764
 
   reg:
     maxItems: 1
index 329260c..3029a86 100644 (file)
@@ -38,6 +38,82 @@ properties:
   DCVDD-supply: true
   MICVDD-supply: true
 
+  wlf,in1l-as-dmicdat1:
+    type: boolean
+    description:
+      Use IN1L/DMICDAT1 as DMICDAT1, enabling the DMIC input path.
+      Can be used separately or together with wlf,in1r-as-dmicdat2.
+
+  wlf,in1r-as-dmicdat2:
+    type: boolean
+    description:
+      Use IN1R/DMICDAT2 as DMICDAT2, enabling the DMIC input path.
+      Can be used separately or together with wlf,in1l-as-dmicdat1.
+
+  wlf,gpio-cfg:
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 4
+    maxItems: 4
+    description:
+      Default register values for R121/122/123/124 (GPIO Control).
+      If any entry has the value 0xFFFF, the related register won't be set.
+    default: [0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF]
+
+  wlf,micbias-cfg:
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 2
+    maxItems: 2
+    description:
+      Default register values for R6/R7 (Mic Bias Control).
+    default: [0, 0]
+
+  wlf,drc-cfg-names:
+    $ref: /schemas/types.yaml#/definitions/string-array
+    description:
+      List of strings for the available DRC modes.
+      If absent, DRC is disabled.
+
+  wlf,drc-cfg-regs:
+    $ref: /schemas/types.yaml#/definitions/uint16-matrix
+    description:
+      Sets of default register values for R40/41/42/43 (DRC).
+      Each set corresponds to a DRC mode, so the number of sets should equal
+      the length of wlf,drc-cfg-names.
+      If absent, DRC is disabled.
+    items:
+      minItems: 4
+      maxItems: 4
+
+  wlf,retune-mobile-cfg-names:
+    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
+    description:
+      List of strings for the available retune modes.
+      If absent, retune is disabled.
+
+  wlf,retune-mobile-cfg-hz:
+    description:
+      The list must be the same length as wlf,retune-mobile-cfg-names.
+      If absent, retune is disabled.
+
+  wlf,retune-mobile-cfg-regs:
+    $ref: /schemas/types.yaml#/definitions/uint16-matrix
+    description:
+      Sets of default register values for R134/.../157 (EQ).
+      Each set corresponds to a retune mode, so the number of sets should equal
+      the length of wlf,retune-mobile-cfg-names.
+      If absent, retune is disabled.
+    items:
+      minItems: 24
+      maxItems: 24
+
+dependencies:
+  wlf,drc-cfg-names: [ 'wlf,drc-cfg-regs' ]
+  wlf,drc-cfg-regs: [ 'wlf,drc-cfg-names' ]
+
+  wlf,retune-mobile-cfg-names: [ 'wlf,retune-mobile-cfg-hz', 'wlf,retune-mobile-cfg-regs' ]
+  wlf,retune-mobile-cfg-regs: [ 'wlf,retune-mobile-cfg-names', 'wlf,retune-mobile-cfg-hz' ]
+  wlf,retune-mobile-cfg-hz: [ 'wlf,retune-mobile-cfg-names', 'wlf,retune-mobile-cfg-regs' ]
+
 required:
   - compatible
   - reg
@@ -70,5 +146,58 @@ examples:
             DBVDD-supply = <&reg_1p8v>;
             DCVDD-supply = <&reg_1p8v>;
             MICVDD-supply = <&reg_1p8v>;
+
+            wlf,drc-cfg-names = "default", "peaklimiter", "tradition", "soft",
+                                "music";
+            /*
+             * Config registers per name, respectively:
+             * KNEE_IP = 0,   KNEE_OP = 0,     HI_COMP = 1,   LO_COMP = 1
+             * KNEE_IP = -24, KNEE_OP = -6,    HI_COMP = 1/4, LO_COMP = 1
+             * KNEE_IP = -42, KNEE_OP = -3,    HI_COMP = 0,   LO_COMP = 1
+             * KNEE_IP = -45, KNEE_OP = -9,    HI_COMP = 1/8, LO_COMP = 1
+             * KNEE_IP = -30, KNEE_OP = -10.5, HI_COMP = 1/4, LO_COMP = 1
+             */
+            wlf,drc-cfg-regs = /bits/ 16 <0x01af 0x3248 0x0000 0x0000>,
+                               /bits/ 16 <0x04af 0x324b 0x0010 0x0408>,
+                               /bits/ 16 <0x04af 0x324b 0x0028 0x0704>,
+                               /bits/ 16 <0x04af 0x324b 0x0018 0x078c>,
+                               /bits/ 16 <0x04af 0x324b 0x0010 0x050e>;
+
+            /* GPIO1 = DMIC_CLK, don't touch others */
+            wlf,gpio-cfg = <0x0018>, <0xffff>, <0xffff>, <0xffff>;
+
+            /* Use IN1R as DMICDAT2, leave IN1L as an analog input path */
+            wlf,in1r-as-dmicdat2;
+
+            wlf,retune-mobile-cfg-names = "bassboost", "bassboost", "treble";
+            wlf,retune-mobile-cfg-hz = <48000>, <44100>, <48000>;
+            /*
+             * Config registers per name, respectively:
+             * EQ_ENA,  100 Hz,  300 Hz,  875 Hz, 2400 Hz, 6900 Hz
+             *      1,   +6 dB,   +3 dB,    0 dB,    0 dB,    0 dB
+             *      1,   +6 dB,   +3 dB,    0 dB,    0 dB,    0 dB
+             *      1,   -2 dB,   -2 dB,    0 dB,    0 dB,   +3 dB
+             * Each one uses the defaults for ReTune Mobile registers 140-157
+             */
+            wlf,retune-mobile-cfg-regs = /bits/ 16 <0x1 0x12 0xf 0xc 0xc 0xc
+                                                    0x0fca 0x0400 0x00d8 0x1eb5
+                                                    0xf145 0x0bd5 0x0075 0x1c58
+                                                    0xf3d3 0x0a54 0x0568 0x168e
+                                                    0xf829 0x07ad 0x1103 0x0564
+                                                    0x0559 0x4000>,
+
+                                         /bits/ 16 <0x1 0x12 0xf 0xc 0xc 0xc
+                                                    0x0fca 0x0400 0x00d8 0x1eb5
+                                                    0xf145 0x0bd5 0x0075 0x1c58
+                                                    0xf3d3 0x0a54 0x0568 0x168e
+                                                    0xf829 0x07ad 0x1103 0x0564
+                                                    0x0559 0x4000>,
+
+                                         /bits/ 16 <0x1 0xa 0xa 0xc 0xc 0xf
+                                                    0x0fca 0x0400 0x00d8 0x1eb5
+                                                    0xf145 0x0bd5 0x0075 0x1c58
+                                                    0xf3d3 0x0a54 0x0568 0x168e
+                                                    0xf829 0x07ad 0x1103 0x0564
+                                                    0x0559 0x4000>;
         };
     };
index 62e62c3..3c2b979 100644 (file)
@@ -75,6 +75,10 @@ properties:
       enable DACLRC pin. If shared-lrclk is present, no need to enable DAC for
       captrue.
 
+  port:
+    $ref: audio-graph-port.yaml#
+    unevaluatedProperties: false
+
 required:
   - compatible
   - reg
diff --git a/Bindings/sound/xlnx,audio-formatter.txt b/Bindings/sound/xlnx,audio-formatter.txt
deleted file mode 100644 (file)
index cbc93c8..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-Device-Tree bindings for Xilinx PL audio formatter
-
-The IP core supports DMA, data formatting(AES<->PCM conversion)
-of audio samples.
-
-Required properties:
- - compatible: "xlnx,audio-formatter-1.0"
- - interrupt-names: Names specified to list of interrupts in same
-                   order mentioned under "interrupts".
-                   List of supported interrupt names are:
-                   "irq_mm2s" : interrupt from MM2S block
-                   "irq_s2mm" : interrupt from S2MM block
- - interrupts-parent: Phandle for interrupt controller.
- - interrupts: List of Interrupt numbers.
- - reg: Base address and size of the IP core instance.
- - clock-names: List of input clocks.
-   Required elements: "s_axi_lite_aclk", "aud_mclk"
- - clocks: Input clock specifier. Refer to common clock bindings.
-
-Example:
-       audio_ss_0_audio_formatter_0: audio_formatter@80010000 {
-               compatible = "xlnx,audio-formatter-1.0";
-               interrupt-names = "irq_mm2s", "irq_s2mm";
-               interrupt-parent = <&gic>;
-               interrupts = <0 104 4>, <0 105 4>;
-               reg = <0x0 0x80010000 0x0 0x1000>;
-               clock-names = "s_axi_lite_aclk", "aud_mclk";
-               clocks = <&clk 71>, <&clk_wiz_1 0>;
-       };
diff --git a/Bindings/sound/xlnx,audio-formatter.yaml b/Bindings/sound/xlnx,audio-formatter.yaml
new file mode 100644 (file)
index 0000000..82fa448
--- /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/sound/xlnx,audio-formatter.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xilinx PL audio formatter
+
+description:
+  The IP core supports DMA, data formatting(AES<->PCM conversion)
+  of audio samples.
+
+maintainers:
+  - Vincenzo Frascino <vincenzo.frascino@arm.com>
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    enum:
+      - xlnx,audio-formatter-1.0
+
+  reg:
+    maxItems: 1
+
+  interrupt-names:
+    minItems: 1
+    items:
+      - const: irq_mm2s
+      - const: irq_s2mm
+
+  interrupts:
+    minItems: 1
+    items:
+      - description: interrupt from MM2S block
+      - description: interrupt from S2MM block
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: s_axi_lite_aclk
+      - const: aud_mclk
+
+  clocks:
+    minItems: 1
+    items:
+      - description: clock for the axi data stream
+      - description: clock for the MEMS microphone data stream
+
+required:
+  - compatible
+  - reg
+  - interrupt-names
+  - interrupts
+  - clock-names
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    audio_formatter@80010000 {
+      compatible = "xlnx,audio-formatter-1.0";
+      reg = <0x80010000 0x1000>;
+      interrupt-names = "irq_mm2s", "irq_s2mm";
+      interrupt-parent = <&gic>;
+      interrupts = <0 104 4>, <0 105 4>;
+      clock-names = "s_axi_lite_aclk", "aud_mclk";
+      clocks = <&clk 71>, <&clk_wiz_1 0>;
+    };
+...
diff --git a/Bindings/sound/xlnx,i2s.txt b/Bindings/sound/xlnx,i2s.txt
deleted file mode 100644 (file)
index 5e7c7d5..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-Device-Tree bindings for Xilinx I2S PL block
-
-The IP supports I2S based playback/capture audio
-
-Required property:
- - compatible: "xlnx,i2s-transmitter-1.0" for playback and
-              "xlnx,i2s-receiver-1.0" for capture
-
-Required property common to both I2S playback and capture:
- - reg: Base address and size of the IP core instance.
- - xlnx,dwidth: sample data width. Can be any of 16, 24.
- - xlnx,num-channels: Number of I2S streams. Can be any of 1, 2, 3, 4.
-                     supported channels = 2 * xlnx,num-channels
-
-Example:
-
-       i2s_receiver@a0080000 {
-               compatible = "xlnx,i2s-receiver-1.0";
-               reg = <0x0 0xa0080000 0x0 0x10000>;
-               xlnx,dwidth = <0x18>;
-               xlnx,num-channels = <1>;
-       };
-       i2s_transmitter@a0090000 {
-               compatible = "xlnx,i2s-transmitter-1.0";
-               reg = <0x0 0xa0090000 0x0 0x10000>;
-               xlnx,dwidth = <0x18>;
-               xlnx,num-channels = <1>;
-       };
diff --git a/Bindings/sound/xlnx,i2s.yaml b/Bindings/sound/xlnx,i2s.yaml
new file mode 100644 (file)
index 0000000..3c2b0be
--- /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/sound/xlnx,i2s.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xilinx I2S PL block
+
+description:
+  The IP supports I2S based playback/capture audio.
+
+maintainers:
+  - Vincenzo Frascino <vincenzo.frascino@arm.com>
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    enum:
+      - xlnx,i2s-receiver-1.0
+      - xlnx,i2s-transmitter-1.0
+
+  reg:
+    maxItems: 1
+
+  xlnx,dwidth:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum:
+      - 16
+      - 24
+    description: |
+      Sample data width.
+
+  xlnx,num-channels:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 1
+    maximum: 4
+    description: |
+      Number of I2S streams.
+
+required:
+  - compatible
+  - reg
+  - xlnx,dwidth
+  - xlnx,num-channels
+
+additionalProperties: false
+
+examples:
+  - |
+    i2s@a0080000 {
+      compatible = "xlnx,i2s-receiver-1.0";
+      reg = <0xa0080000 0x10000>;
+      xlnx,dwidth = <0x18>;
+      xlnx,num-channels = <1>;
+    };
+    i2s@a0090000 {
+      compatible = "xlnx,i2s-transmitter-1.0";
+      reg = <0xa0090000 0x10000>;
+      xlnx,dwidth = <0x18>;
+      xlnx,num-channels = <1>;
+    };
+
+...
diff --git a/Bindings/sound/xlnx,spdif.txt b/Bindings/sound/xlnx,spdif.txt
deleted file mode 100644 (file)
index 15c2d64..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-Device-Tree bindings for Xilinx SPDIF IP
-
-The IP supports playback and capture of SPDIF audio
-
-Required properties:
- - compatible: "xlnx,spdif-2.0"
- - clock-names: List of input clocks.
-   Required elements: "s_axi_aclk", "aud_clk_i"
- - clocks: Input clock specifier. Refer to common clock bindings.
- - reg: Base address and address length of the IP core instance.
- - interrupts-parent: Phandle for interrupt controller.
- - interrupts: List of Interrupt numbers.
- - xlnx,spdif-mode: 0 :- receiver mode
-                   1 :- transmitter mode
- - xlnx,aud_clk_i: input audio clock value.
-
-Example:
-       spdif_0: spdif@80010000 {
-               clock-names = "aud_clk_i", "s_axi_aclk";
-               clocks = <&misc_clk_0>, <&clk 71>;
-               compatible = "xlnx,spdif-2.0";
-               interrupt-names = "spdif_interrupt";
-               interrupt-parent = <&gic>;
-               interrupts = <0 91 4>;
-               reg = <0x0 0x80010000 0x0 0x10000>;
-               xlnx,spdif-mode = <1>;
-               xlnx,aud_clk_i = <49152913>;
-       };
diff --git a/Bindings/sound/xlnx,spdif.yaml b/Bindings/sound/xlnx,spdif.yaml
new file mode 100644 (file)
index 0000000..a45d8a0
--- /dev/null
@@ -0,0 +1,77 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/xlnx,spdif.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xilinx SPDIF IP
+
+description:
+  The IP supports playback and capture of SPDIF audio.
+
+maintainers:
+  - Vincenzo Frascino <vincenzo.frascino@arm.com>
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    enum:
+      - xlnx,spdif-2.0
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: SPDIF audio interrupt
+
+  clock-names:
+    items:
+      - const: aud_clk_i
+      - const: s_axi_aclk
+
+  clocks:
+    minItems: 1
+    items:
+      - description: input audio clock
+      - description: clock for the AXI data stream
+
+  xlnx,spdif-mode:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum:
+      - 0
+      - 1
+    description: |
+      0 - receiver
+      1 - transmitter
+
+  xlnx,aud_clk_i:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      Input audio clock frequency. It affects the sampling rate.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clock-names
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    spdif@80010000 {
+      compatible = "xlnx,spdif-2.0";
+      reg = <0x80010000 0x10000>;
+      clock-names = "aud_clk_i", "s_axi_aclk";
+      clocks = <&misc_clk_0>, <&clk 71>;
+      interrupt-parent = <&gic>;
+      interrupts = <0 91 4>;
+      xlnx,spdif-mode = <1>;
+      xlnx,aud_clk_i = <49152913>;
+    };
+
+...
index d48faa4..4b3828e 100644 (file)
@@ -41,6 +41,26 @@ properties:
       - const: s_axi_aclk
       - const: spi_clk
 
+  trigger-sources:
+    description:
+      An array of trigger source phandles for offload instances. The index in
+      the array corresponds to the offload instance number.
+    minItems: 1
+    maxItems: 32
+
+  dmas:
+    description:
+      DMA channels connected to the input or output stream interface of an
+      offload instance.
+    minItems: 1
+    maxItems: 32
+
+  dma-names:
+    items:
+      pattern: "^offload(?:[12]?[0-9]|3[01])-[tr]x$"
+    minItems: 1
+    maxItems: 32
+
 required:
   - compatible
   - reg
@@ -59,6 +79,10 @@ examples:
         clocks = <&clkc 15>, <&clkc 15>;
         clock-names = "s_axi_aclk", "spi_clk";
 
+        trigger-sources = <&trigger_clock>;
+        dmas = <&dma 0>;
+        dma-names = "offload0-rx";
+
         #address-cells = <1>;
         #size-cells = <0>;
 
index b6bc71d..53a52fb 100644 (file)
@@ -4,7 +4,7 @@
 $id: http://devicetree.org/schemas/spi/cdns,qspi-nor.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Cadence Quad SPI controller
+title: Cadence Quad/Octal SPI controller
 
 maintainers:
   - Vaishnav Achath <vaishnav.a@ti.com>
@@ -76,8 +76,12 @@ properties:
               - ti,am654-ospi
               - ti,k2g-qspi
               - xlnx,versal-ospi-1.0
+          # The compatible is qspi-nor for historical reasons but such
+          # controllers are meant to be used with flashes of all kinds,
+          # ie. also NAND flashes, not only NOR flashes.
           - const: cdns,qspi-nor
       - const: cdns,qspi-nor
+        deprecated: true
 
   reg:
     items:
@@ -142,6 +146,18 @@ properties:
     items:
       enum: [ qspi, qspi-ocp, rstc_ref ]
 
+patternProperties:
+  "^flash@[0-9a-f]+$":
+    type: object
+    $ref: cdns,qspi-nor-peripheral-props.yaml
+    additionalProperties: true
+    required:
+      - cdns,read-delay
+      - cdns,tshsl-ns
+      - cdns,tsd2d-ns
+      - cdns,tchsh-ns
+      - cdns,tslch-ns
+
 required:
   - compatible
   - reg
@@ -157,7 +173,7 @@ unevaluatedProperties: false
 examples:
   - |
     qspi: spi@ff705000 {
-        compatible = "cdns,qspi-nor";
+        compatible = "intel,socfpga-qspi", "cdns,qspi-nor";
         #address-cells = <1>;
         #size-cells = <0>;
         reg = <0xff705000 0x1000>,
@@ -173,5 +189,10 @@ examples:
         flash@0 {
             compatible = "jedec,spi-nor";
             reg = <0x0>;
+            cdns,read-delay = <4>;
+            cdns,tshsl-ns = <60>;
+            cdns,tsd2d-ns = <60>;
+            cdns,tchsh-ns = <60>;
+            cdns,tslch-ns = <60>;
         };
     };
diff --git a/Bindings/spi/fsl,espi.yaml b/Bindings/spi/fsl,espi.yaml
new file mode 100644 (file)
index 0000000..d267bbf
--- /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/spi/fsl,espi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale eSPI (Enhanced Serial Peripheral Interface) controller
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+properties:
+  compatible:
+    const: fsl,mpc8536-espi
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  fsl,espi-num-chipselects:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [ 1, 4 ]
+    description: The number of the chipselect signals.
+
+  fsl,csbef:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 15
+    description: Chip select assertion time in bits before frame starts
+
+  fsl,csaft:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 15
+    description: Chip select negation time in bits after frame ends
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - fsl,espi-num-chipselects
+
+allOf:
+  - $ref: spi-controller.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    spi@110000 {
+        compatible = "fsl,mpc8536-espi";
+        reg = <0x110000 0x1000>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        interrupts = <53 IRQ_TYPE_EDGE_FALLING>;
+        fsl,espi-num-chipselects = <4>;
+        fsl,csbef = <1>;
+        fsl,csaft = <1>;
+    };
+
+...
diff --git a/Bindings/spi/fsl,spi.yaml b/Bindings/spi/fsl,spi.yaml
new file mode 100644 (file)
index 0000000..d74792f
--- /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/spi/fsl,spi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale SPI (Serial Peripheral Interface) controller
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+properties:
+  compatible:
+    enum:
+      - fsl,spi
+      - aeroflexgaisler,spictrl
+
+  reg:
+    maxItems: 1
+
+  cell-index:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: |
+      QE SPI subblock index.
+      0: QE subblock SPI1
+      1: QE subblock SPI2
+
+  mode:
+    description: SPI operation mode
+    enum:
+      - cpu
+      - cpu-qe
+
+  interrupts:
+    maxItems: 1
+
+  clock-frequency:
+    description: input clock frequency to non FSL_SOC cores
+
+  cs-gpios: true
+
+  fsl,spisel_boot:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      For the MPC8306 and MPC8309, specifies that the SPISEL_BOOT signal is used
+      as chip select for a slave device. Use reg = <number of gpios> in the
+      corresponding child node, i.e. 0 if the cs-gpios property is not present.
+
+required:
+  - compatible
+  - reg
+  - mode
+  - interrupts
+
+allOf:
+  - $ref: spi-controller.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    spi@4c0 {
+        compatible = "fsl,spi";
+        reg = <0x4c0 0x40>;
+        cell-index = <0>;
+        interrupts = <82 0>;
+        mode = "cpu";
+        cs-gpios = <&gpio 18 IRQ_TYPE_EDGE_RISING          // device reg=<0>
+                    &gpio 19 IRQ_TYPE_EDGE_RISING>;        // device reg=<1>
+    };
+
+...
diff --git a/Bindings/spi/fsl-spi.txt b/Bindings/spi/fsl-spi.txt
deleted file mode 100644 (file)
index 0654380..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-* SPI (Serial Peripheral Interface)
-
-Required properties:
-- cell-index : QE SPI subblock index.
-               0: QE subblock SPI1
-               1: QE subblock SPI2
-- compatible : should be "fsl,spi" or "aeroflexgaisler,spictrl".
-- mode : the SPI operation mode, it can be "cpu" or "cpu-qe".
-- reg : Offset and length of the register set for the device
-- interrupts : <a b> where a is the interrupt number and b is a
-  field that represents an encoding of the sense and level
-  information for the interrupt.  This should be encoded based on
-  the information in section 2) depending on the type of interrupt
-  controller you have.
-- clock-frequency : input clock frequency to non FSL_SOC cores
-
-Optional properties:
-- cs-gpios : specifies the gpio pins to be used for chipselects.
-  The gpios will be referred to as reg = <index> in the SPI child nodes.
-  If unspecified, a single SPI device without a chip select can be used.
-- fsl,spisel_boot : for the MPC8306 and MPC8309, specifies that the
-  SPISEL_BOOT signal is used as chip select for a slave device. Use
-  reg = <number of gpios> in the corresponding child node, i.e. 0 if
-  the cs-gpios property is not present.
-
-Example:
-       spi@4c0 {
-               cell-index = <0>;
-               compatible = "fsl,spi";
-               reg = <4c0 40>;
-               interrupts = <82 0>;
-               interrupt-parent = <700>;
-               mode = "cpu";
-               cs-gpios = <&gpio 18 1          // device reg=<0>
-                           &gpio 19 1>;        // device reg=<1>
-       };
-
-
-* eSPI (Enhanced Serial Peripheral Interface)
-
-Required properties:
-- compatible : should be "fsl,mpc8536-espi".
-- reg : Offset and length of the register set for the device.
-- interrupts : should contain eSPI interrupt, the device has one interrupt.
-- fsl,espi-num-chipselects : the number of the chipselect signals.
-
-Optional properties:
-- fsl,csbef: chip select assertion time in bits before frame starts
-- fsl,csaft: chip select negation time in bits after frame ends
-
-Example:
-       spi@110000 {
-               #address-cells = <1>;
-               #size-cells = <0>;
-               compatible = "fsl,mpc8536-espi";
-               reg = <0x110000 0x1000>;
-               interrupts = <53 0x2>;
-               interrupt-parent = <&mpic>;
-               fsl,espi-num-chipselects = <4>;
-               fsl,csbef = <1>;
-               fsl,csaft = <1>;
-       };
index e1f5bfa..ed17815 100644 (file)
@@ -35,6 +35,8 @@ properties:
           - enum:
               - mediatek,mt7981-spi-ipm
               - mediatek,mt7986-spi-ipm
+              - mediatek,mt7988-spi-quad
+              - mediatek,mt7988-spi-single
               - mediatek,mt8188-spi-ipm
           - const: mediatek,spi-ipm
       - items:
diff --git a/Bindings/spi/qcom,spi-qpic-snand.yaml b/Bindings/spi/qcom,spi-qpic-snand.yaml
new file mode 100644 (file)
index 0000000..aa3f933
--- /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/spi/qcom,spi-qpic-snand.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm QPIC NAND controller
+
+maintainers:
+  - Md sadre Alam <quic_mdalam@quicinc.com>
+
+description:
+  The QCOM QPIC-SPI-NAND flash controller is an extended version of
+  the QCOM QPIC NAND flash controller. It can work both in serial
+  and parallel mode. It supports typical SPI-NAND page cache
+  operations in single, dual or quad IO mode with pipelined ECC
+  encoding/decoding using the QPIC ECC HW engine.
+
+allOf:
+  - $ref: /schemas/spi/spi-controller.yaml#
+
+properties:
+  compatible:
+    enum:
+      - qcom,ipq9574-snand
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 3
+
+  clock-names:
+    items:
+      - const: core
+      - const: aon
+      - const: iom
+
+  dmas:
+    items:
+      - description: tx DMA channel
+      - description: rx DMA channel
+      - description: cmd DMA channel
+
+  dma-names:
+    items:
+      - const: tx
+      - const: rx
+      - const: cmd
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,ipq9574-gcc.h>
+    spi@79b0000 {
+        compatible = "qcom,ipq9574-snand";
+        reg = <0x1ac00000 0x800>;
+
+        clocks = <&gcc GCC_QPIC_CLK>,
+                 <&gcc GCC_QPIC_AHB_CLK>,
+                 <&gcc GCC_QPIC_IO_MACRO_CLK>;
+        clock-names = "core", "aon", "iom";
+
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        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>;
+        };
+    };
index bccd00a..53d00ca 100644 (file)
@@ -56,19 +56,18 @@ properties:
         enum:
           - snps,dw-apb-ssi
           - snps,dwc-ssi-1.01a
-      - description: Microsemi Ocelot/Jaguar2 SoC SPI Controller
-        items:
-          - enum:
-              - mscc,ocelot-spi
-              - mscc,jaguar2-spi
-          - const: snps,dw-apb-ssi
       - description: Microchip Sparx5 SoC SPI Controller
         const: microchip,sparx5-spi
       - description: Amazon Alpine SPI Controller
         const: amazon,alpine-dw-apb-ssi
-      - description: Renesas RZ/N1 SPI Controller
+      - description: Vendor controllers which use snps,dw-apb-ssi as fallback
         items:
-          - const: renesas,rzn1-spi
+          - enum:
+              - mscc,ocelot-spi
+              - mscc,jaguar2-spi
+              - renesas,rzn1-spi
+              - sophgo,sg2042-spi
+              - thead,th1520-spi
           - const: snps,dw-apb-ssi
       - description: Intel Keem Bay SPI Controller
         const: intel,keembay-ssi
@@ -88,10 +87,6 @@ properties:
               - renesas,r9a06g032-spi # RZ/N1D
               - renesas,r9a06g033-spi # RZ/N1S
           - const: renesas,rzn1-spi   # RZ/N1
-      - description: T-HEAD TH1520 SoC SPI Controller
-        items:
-          - const: thead,th1520-spi
-          - const: snps,dw-apb-ssi
 
   reg:
     minItems: 1
index ed1d4aa..a65a42c 100644 (file)
@@ -24,6 +24,7 @@ properties:
           - enum:
               - fsl,imx8ulp-spi
               - fsl,imx93-spi
+              - fsl,imx94-spi
               - fsl,imx95-spi
           - const: fsl,imx7ulp-spi
   reg:
index 46d9d6e..104f5ff 100644 (file)
@@ -34,6 +34,7 @@ properties:
               - rockchip,rk3328-spi
               - rockchip,rk3368-spi
               - rockchip,rk3399-spi
+              - rockchip,rk3562-spi
               - rockchip,rk3568-spi
               - rockchip,rk3576-spi
               - rockchip,rk3588-spi
diff --git a/Bindings/spi/spi-sg2044-nor.yaml b/Bindings/spi/spi-sg2044-nor.yaml
new file mode 100644 (file)
index 0000000..948ff7a
--- /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/spi/spi-sg2044-nor.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SG2044 SPI NOR controller
+
+maintainers:
+  - Longbin Li <looong.bin@gmail.com>
+
+allOf:
+  - $ref: spi-controller.yaml#
+
+properties:
+  compatible:
+    const: sophgo,sg2044-spifmc-nor
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+  - resets
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    spi@1000000 {
+      compatible = "sophgo,sg2044-spifmc-nor";
+      reg = <0x1000000 0x4000000>;
+      #address-cells = <1>;
+      #size-cells = <0>;
+      clocks = <&clk 0>;
+      interrupts = <37 IRQ_TYPE_LEVEL_HIGH>;
+      resets = <&rst 0>;
+    };
index 04d4d3b..02cf131 100644 (file)
@@ -65,14 +65,13 @@ allOf:
 
 examples:
   - |
-    #include <dt-bindings/clock/xlnx-zynqmp-clk.h>
     soc {
       #address-cells = <2>;
       #size-cells = <2>;
 
       qspi: spi@ff0f0000 {
         compatible = "xlnx,zynqmp-qspi-1.0";
-        clocks = <&zynqmp_clk QSPI_REF>, <&zynqmp_clk LPD_LSBUS>;
+        clocks = <&zynqmp_clk 53>, <&zynqmp_clk 82>;
         clock-names = "ref_clk", "pclk";
         interrupts = <0 15 4>;
         interrupt-parent = <&gic>;
diff --git a/Bindings/spi/st,stm32mp25-ospi.yaml b/Bindings/spi/st,stm32mp25-ospi.yaml
new file mode 100644 (file)
index 0000000..5f276f2
--- /dev/null
@@ -0,0 +1,105 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/spi/st,stm32mp25-ospi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STMicroelectronics STM32 Octal Serial Peripheral Interface (OSPI)
+
+maintainers:
+  - Patrice Chotard <patrice.chotard@foss.st.com>
+
+allOf:
+  - $ref: spi-controller.yaml#
+
+properties:
+  compatible:
+    const: st,stm32mp25-ospi
+
+  reg:
+    maxItems: 1
+
+  memory-region:
+    description:
+      Memory region to be used for memory-map read access.
+      In memory-mapped mode, read access are performed from the memory
+      device using the direct mapping.
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  resets:
+    items:
+      - description: phandle to OSPI block reset
+      - description: phandle to delay block reset
+
+  dmas:
+    maxItems: 2
+
+  dma-names:
+    items:
+      - const: tx
+      - const: rx
+
+  st,syscfg-dlyb:
+    description: configure OCTOSPI delay block.
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    items:
+      - description: phandle to syscfg
+      - description: register offset within syscfg
+
+  access-controllers:
+    description: phandle to the rifsc device to check access right
+      and in some cases, an additional phandle to the rcc device for
+      secure clock control.
+    items:
+      - description: phandle to bus controller
+      - description: phandle to clock controller
+    minItems: 1
+
+  power-domains:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+  - st,syscfg-dlyb
+
+unevaluatedProperties: 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>
+
+    spi@40430000 {
+      compatible = "st,stm32mp25-ospi";
+      reg = <0x40430000 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>;
+      st,syscfg-dlyb = <&syscfg 0x1000>;
+
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      flash@0 {
+        compatible = "jedec,spi-nor";
+        reg = <0>;
+        spi-rx-bus-width = <4>;
+        spi-max-frequency = <108000000>;
+      };
+    };
index a64f21a..f3e23e6 100644 (file)
@@ -54,11 +54,22 @@ I. For patch submitters
      followed as of commit bff5da4335256513497cc8c79f9a9d1665e09864
      ("checkpatch: add DT compatible string documentation checks"). ]
 
-  7) If a documented compatible string is not yet matched by the
+  7) DTS is treated in general as driver-independent hardware description, thus
+     any DTS patches, regardless whether using existing or new bindings, should
+     be placed at the end of patchset to indicate no dependency of drivers on
+     the DTS.  DTS will be anyway applied through separate tree or branch, so
+     different order would indicate the serie is non-bisectable.
+
+     If a driver subsystem maintainer prefers to apply entire set, instead of
+     their relevant portion of patchset, please split the DTS patches into
+     separate patchset with a reference in changelog or cover letter to the
+     bindings submission on the mailing list.
+
+  8) If a documented compatible string is not yet matched by the
      driver, the documentation should also include a compatible
      string that is matched by the driver.
 
-  8) Bindings are actively used by multiple projects other than the Linux
+  9) Bindings are actively used by multiple projects other than the Linux
      Kernel, extra care and consideration may need to be taken when making changes
      to existing bindings.
 
@@ -79,6 +90,10 @@ II. For kernel maintainers
   3) For a series going though multiple trees, the binding patch should be
      kept with the driver using the binding.
 
+  4) The DTS files should however never be applied via driver subsystem tree,
+     but always via platform SoC trees on dedicated branches (see also
+     Documentation/process/maintainer-soc.rst).
+
 III. Notes
 ==========
 
index dad8de9..3e61689 100644 (file)
@@ -142,38 +142,38 @@ unevaluatedProperties: false
 examples:
   - |
     thermal-sensor@1f04000 {
-         compatible = "allwinner,sun8i-a83t-ths";
-         reg = <0x01f04000 0x100>;
-         interrupts = <0 31 0>;
-         nvmem-cells = <&ths_calibration>;
-         nvmem-cell-names = "calibration";
-         #thermal-sensor-cells = <1>;
+        compatible = "allwinner,sun8i-a83t-ths";
+        reg = <0x01f04000 0x100>;
+        interrupts = <0 31 0>;
+        nvmem-cells = <&ths_calibration>;
+        nvmem-cell-names = "calibration";
+        #thermal-sensor-cells = <1>;
     };
 
   - |
     thermal-sensor@1c25000 {
-         compatible = "allwinner,sun8i-h3-ths";
-         reg = <0x01c25000 0x400>;
-         clocks = <&ccu 0>, <&ccu 1>;
-         clock-names = "bus", "mod";
-         resets = <&ccu 2>;
-         interrupts = <0 31 0>;
-         nvmem-cells = <&ths_calibration>;
-         nvmem-cell-names = "calibration";
-         #thermal-sensor-cells = <0>;
+        compatible = "allwinner,sun8i-h3-ths";
+        reg = <0x01c25000 0x400>;
+        clocks = <&ccu 0>, <&ccu 1>;
+        clock-names = "bus", "mod";
+        resets = <&ccu 2>;
+        interrupts = <0 31 0>;
+        nvmem-cells = <&ths_calibration>;
+        nvmem-cell-names = "calibration";
+        #thermal-sensor-cells = <0>;
     };
 
   - |
     thermal-sensor@5070400 {
-         compatible = "allwinner,sun50i-h6-ths";
-         reg = <0x05070400 0x100>;
-         clocks = <&ccu 0>;
-         clock-names = "bus";
-         resets = <&ccu 2>;
-         interrupts = <0 15 0>;
-         nvmem-cells = <&ths_calibration>;
-         nvmem-cell-names = "calibration";
-         #thermal-sensor-cells = <1>;
+        compatible = "allwinner,sun50i-h6-ths";
+        reg = <0x05070400 0x100>;
+        clocks = <&ccu 0>;
+        clock-names = "bus";
+        resets = <&ccu 2>;
+        interrupts = <0 15 0>;
+        nvmem-cells = <&ths_calibration>;
+        nvmem-cell-names = "calibration";
+        #thermal-sensor-cells = <1>;
     };
 
 ...
index 081486b..2f62551 100644 (file)
@@ -18,6 +18,7 @@ properties:
   compatible:
     items:
       - enum:
+          - brcm,avs-tmon-bcm74110
           - brcm,avs-tmon-bcm7216
           - brcm,avs-tmon-bcm7445
       - const: brcm,avs-tmon
index 3375605..949b154 100644 (file)
@@ -80,19 +80,19 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
 
     efuse@21bc000 {
-         #address-cells = <1>;
-         #size-cells = <1>;
-         compatible = "fsl,imx6sx-ocotp", "syscon";
-         reg = <0x021bc000 0x4000>;
-         clocks = <&clks IMX6SX_CLK_OCOTP>;
-
-         tempmon_calib: calib@38 {
-             reg = <0x38 4>;
-         };
-
-         tempmon_temp_grade: temp-grade@20 {
-             reg = <0x20 4>;
-         };
+        #address-cells = <1>;
+        #size-cells = <1>;
+        compatible = "fsl,imx6sx-ocotp", "syscon";
+        reg = <0x021bc000 0x4000>;
+        clocks = <&clks IMX6SX_CLK_OCOTP>;
+
+        tempmon_calib: calib@38 {
+            reg = <0x38 4>;
+        };
+
+        tempmon_temp_grade: temp-grade@20 {
+            reg = <0x20 4>;
+        };
     };
 
     anatop@20c8000 {
@@ -103,12 +103,12 @@ examples:
                      <0 127 IRQ_TYPE_LEVEL_HIGH>;
 
         tempmon {
-             compatible = "fsl,imx6sx-tempmon";
-             interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
-             fsl,tempmon = <&anatop>;
-             nvmem-cells = <&tempmon_calib>, <&tempmon_temp_grade>;
-             nvmem-cell-names = "calib", "temp_grade";
-             clocks = <&clks IMX6SX_CLK_PLL3_USB_OTG>;
-             #thermal-sensor-cells = <0>;
+            compatible = "fsl,imx6sx-tempmon";
+            interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+            fsl,tempmon = <&anatop>;
+            nvmem-cells = <&tempmon_calib>, <&tempmon_temp_grade>;
+            nvmem-cell-names = "calib", "temp_grade";
+            clocks = <&clks IMX6SX_CLK_PLL3_USB_OTG>;
+            #thermal-sensor-cells = <0>;
         };
     };
index bef0e95..df6c7c5 100644 (file)
@@ -63,10 +63,10 @@ examples:
     #include <dt-bindings/clock/imx8mm-clock.h>
 
     thermal-sensor@30260000 {
-         compatible = "fsl,imx8mm-tmu";
-         reg = <0x30260000 0x10000>;
-         clocks = <&clk IMX8MM_CLK_TMU_ROOT>;
-         #thermal-sensor-cells = <0>;
+        compatible = "fsl,imx8mm-tmu";
+        reg = <0x30260000 0x10000>;
+        clocks = <&clk IMX8MM_CLK_TMU_ROOT>;
+        #thermal-sensor-cells = <0>;
     };
 
 ...
index b9829bb..f9d8012 100644 (file)
@@ -75,6 +75,8 @@ properties:
 
       - description: v2 of TSENS with combined interrupt
         enum:
+          - qcom,ipq5332-tsens
+          - qcom,ipq5424-tsens
           - qcom,ipq8074-tsens
 
       - description: v2 of TSENS with combined interrupt
@@ -212,6 +214,18 @@ properties:
           - const: s9_p2_backup
           - const: s10_p1_backup
           - const: s10_p2_backup
+      - minItems: 8
+        items:
+          - const: mode
+          - const: base0
+          - const: base1
+          - pattern: '^tsens_sens[0-9]+_off$'
+          - pattern: '^tsens_sens[0-9]+_off$'
+          - pattern: '^tsens_sens[0-9]+_off$'
+          - pattern: '^tsens_sens[0-9]+_off$'
+          - pattern: '^tsens_sens[0-9]+_off$'
+          - pattern: '^tsens_sens[0-9]+_off$'
+          - pattern: '^tsens_sens[0-9]+_off$'
 
   "#qcom,sensors":
     description:
@@ -271,6 +285,8 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,ipq5332-tsens
+              - qcom,ipq5424-tsens
               - qcom,ipq8074-tsens
     then:
       properties:
@@ -286,6 +302,8 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,ipq5332-tsens
+              - qcom,ipq5424-tsens
               - qcom,ipq8074-tsens
               - qcom,tsens-v0_1
               - qcom,tsens-v1
index 0f435be..0de0a97 100644 (file)
@@ -82,9 +82,8 @@ patternProperties:
         $ref: /schemas/types.yaml#/definitions/string
         description: |
           The action the OS should perform after the critical temperature is reached.
-          By default the system will shutdown as a safe action to prevent damage
-          to the hardware, if the property is not set.
-          The shutdown action should be always the default and preferred one.
+          If the property is not set, it is up to the system to select the correct
+          action. The recommended and preferred default is shutdown.
           Choose 'reboot' with care, as the hardware may be in thermal stress,
           thus leading to infinite reboots that may cause damage to the hardware.
           Make sure the firmware/bootloader will act as the last resort and take
index 5684df6..eb11273 100644 (file)
@@ -50,7 +50,7 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
 
     timer@2c000600 {
-            compatible = "arm,arm11mp-twd-timer";
-            reg = <0x2c000600 0x20>;
-            interrupts = <GIC_PPI 13 0xf01>;
+        compatible = "arm,arm11mp-twd-timer";
+        reg = <0x2c000600 0x20>;
+        interrupts = <GIC_PPI 13 0xf01>;
     };
index 891cca0..6b80b06 100644 (file)
@@ -18,9 +18,14 @@ description: |
 
 properties:
   compatible:
-    enum:
-      - nxp,imx95-sysctr-timer
-      - nxp,sysctr-timer
+    oneOf:
+      - enum:
+          - nxp,imx95-sysctr-timer
+          - nxp,sysctr-timer
+      - items:
+          - enum:
+              - nxp,imx94-sysctr-timer
+          - const: nxp,imx95-sysctr-timer
 
   reg:
     maxItems: 1
index 5e09c04..260b05f 100644 (file)
@@ -178,29 +178,29 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     #include <dt-bindings/power/r8a7790-sysc.h>
     cmt0: timer@ffca0000 {
-            compatible = "renesas,r8a7790-cmt0", "renesas,rcar-gen2-cmt0";
-            reg = <0xffca0000 0x1004>;
-            interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
-            clocks = <&cpg CPG_MOD 124>;
-            clock-names = "fck";
-            power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
-            resets = <&cpg 124>;
+        compatible = "renesas,r8a7790-cmt0", "renesas,rcar-gen2-cmt0";
+        reg = <0xffca0000 0x1004>;
+        interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&cpg CPG_MOD 124>;
+        clock-names = "fck";
+        power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
+        resets = <&cpg 124>;
     };
 
     cmt1: timer@e6130000 {
-            compatible = "renesas,r8a7790-cmt1", "renesas,rcar-gen2-cmt1";
-            reg = <0xe6130000 0x1004>;
-            interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
-            clocks = <&cpg CPG_MOD 329>;
-            clock-names = "fck";
-            power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
-            resets = <&cpg 329>;
+        compatible = "renesas,r8a7790-cmt1", "renesas,rcar-gen2-cmt1";
+        reg = <0xe6130000 0x1004>;
+        interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&cpg CPG_MOD 329>;
+        clock-names = "fck";
+        power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
+        resets = <&cpg 329>;
     };
index 233d74d..a7385d8 100644 (file)
@@ -38,9 +38,9 @@ examples:
   - |
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     timer@e0180000 {
-            compatible = "renesas,em-sti";
-            reg = <0xe0180000 0x54>;
-            interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
-            clocks = <&sti_sclk>;
-            clock-names = "sclk";
+        compatible = "renesas,em-sti";
+        reg = <0xe0180000 0x54>;
+        interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&sti_sclk>;
+        clock-names = "sclk";
     };
index 15d8ddd..e56c12f 100644 (file)
@@ -66,11 +66,11 @@ examples:
     #include <dt-bindings/clock/r7s72100-clock.h>
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     mtu2: timer@fcff0000 {
-            compatible = "renesas,mtu2-r7s72100", "renesas,mtu2";
-            reg = <0xfcff0000 0x400>;
-            interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
-            interrupt-names = "tgi0a";
-            clocks = <&mstp3_clks R7S72100_CLK_MTU2>;
-            clock-names = "fck";
-            power-domains = <&cpg_clocks>;
+        compatible = "renesas,mtu2-r7s72100", "renesas,mtu2";
+        reg = <0xfcff0000 0x400>;
+        interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "tgi0a";
+        clocks = <&mstp3_clks R7S72100_CLK_MTU2>;
+        clock-names = "fck";
+        power-domains = <&cpg_clocks>;
     };
index e8c6421..9ba858f 100644 (file)
@@ -71,9 +71,9 @@ examples:
     #include <dt-bindings/clock/r7s72100-clock.h>
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     ostm0: timer@fcfec000 {
-            compatible = "renesas,r7s72100-ostm", "renesas,ostm";
-            reg = <0xfcfec000 0x30>;
-            interrupts = <GIC_SPI 102 IRQ_TYPE_EDGE_RISING>;
-            clocks = <&mstp5_clks R7S72100_CLK_OSTM0>;
-            power-domains = <&cpg_clocks>;
+        compatible = "renesas,r7s72100-ostm", "renesas,ostm";
+        reg = <0xfcfec000 0x30>;
+        interrupts = <GIC_SPI 102 IRQ_TYPE_EDGE_RISING>;
+        clocks = <&mstp5_clks R7S72100_CLK_OSTM0>;
+        power-domains = <&cpg_clocks>;
     };
index 75b0e7c..b122959 100644 (file)
@@ -122,15 +122,15 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     #include <dt-bindings/power/r8a7779-sysc.h>
     tmu0: timer@ffd80000 {
-            compatible = "renesas,tmu-r8a7779", "renesas,tmu";
-            reg = <0xffd80000 0x30>;
-            interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
-            interrupt-names = "tuni0", "tuni1", "tuni2", "ticpi2";
-            clocks = <&mstp0_clks R8A7779_CLK_TMU0>;
-            clock-names = "fck";
-            power-domains = <&sysc R8A7779_PD_ALWAYS_ON>;
-            #renesas,channels = <3>;
+        compatible = "renesas,tmu-r8a7779", "renesas,tmu";
+        reg = <0xffd80000 0x30>;
+        interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "tuni0", "tuni1", "tuni2", "ticpi2";
+        clocks = <&mstp0_clks R8A7779_CLK_TMU0>;
+        clock-names = "fck";
+        power-domains = <&sysc R8A7779_PD_ALWAYS_ON>;
+        #renesas,channels = <3>;
     };
diff --git a/Bindings/timer/renesas,tpu.yaml b/Bindings/timer/renesas,tpu.yaml
deleted file mode 100644 (file)
index 01554df..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/timer/renesas,tpu.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Renesas H8/300 Timer Pulse Unit
-
-maintainers:
-  - Yoshinori Sato <ysato@users.sourceforge.jp>
-
-description:
-  The TPU is a 16bit timer/counter with configurable clock inputs and
-  programmable compare match.
-  This implementation supports only cascade mode.
-
-select:
-  properties:
-    compatible:
-      contains:
-        const: renesas,tpu
-    '#pwm-cells': false
-  required:
-    - compatible
-
-properties:
-  compatible:
-    const: renesas,tpu
-
-  reg:
-    items:
-      - description: First channel
-      - description: Second channel
-
-  clocks:
-    maxItems: 1
-
-  clock-names:
-    const: fck
-
-required:
-  - compatible
-  - reg
-  - clocks
-  - clock-names
-
-additionalProperties: false
-
-examples:
-  - |
-    tpu: tpu@ffffe0 {
-            compatible = "renesas,tpu";
-            reg = <0xffffe0 16>, <0xfffff0 12>;
-            clocks = <&pclk>;
-            clock-names = "fck";
-    };
index 02d1c35..10578f5 100644 (file)
@@ -27,6 +27,7 @@ properties:
           - enum:
               - axis,artpec8-mct
               - google,gs101-mct
+              - samsung,exynos2200-mct-peris
               - samsung,exynos3250-mct
               - samsung,exynos5250-mct
               - samsung,exynos5260-mct
@@ -34,6 +35,7 @@ properties:
               - samsung,exynos5433-mct
               - samsung,exynos850-mct
               - samsung,exynos8895-mct
+              - samsung,exynos990-mct
               - tesla,fsd-mct
           - const: samsung,exynos4210-mct
 
@@ -130,11 +132,13 @@ allOf:
             enum:
               - axis,artpec8-mct
               - google,gs101-mct
+              - samsung,exynos2200-mct-peris
               - samsung,exynos5260-mct
               - samsung,exynos5420-mct
               - samsung,exynos5433-mct
               - samsung,exynos850-mct
               - samsung,exynos8895-mct
+              - samsung,exynos990-mct
     then:
       properties:
         interrupts:
index 76d83ae..653e2e0 100644 (file)
@@ -36,6 +36,12 @@ properties:
               - starfive,jh7110-clint   # StarFive JH7110
               - starfive,jh8100-clint   # StarFive JH8100
           - const: sifive,clint0        # SiFive CLINT v0 IP block
+      - items:
+          - {}
+          - const: sifive,clint2        # SiFive CLINT v2 IP block
+        description:
+          SiFive CLINT v2 is the HRT that supports the Zicntr. The control of sifive,clint2
+          differs from that of sifive,clint0, making them incompatible.
       - items:
           - enum:
               - allwinner,sun20i-d1-clint
@@ -62,6 +68,22 @@ properties:
     minItems: 1
     maxItems: 4095
 
+  sifive,fine-ctr-bits:
+    maximum: 15
+    description: The width in bits of the fine counter.
+
+if:
+  properties:
+    compatible:
+      contains:
+        const: sifive,clint2
+then:
+  required:
+    - sifive,fine-ctr-bits
+else:
+  properties:
+    sifive,fine-ctr-bits: false
+
 additionalProperties: false
 
 required:
@@ -77,6 +99,6 @@ examples:
                             <&cpu2intc 3>, <&cpu2intc 7>,
                             <&cpu3intc 3>, <&cpu3intc 7>,
                             <&cpu4intc 3>, <&cpu4intc 7>;
-       reg = <0x2000000 0x10000>;
+      reg = <0x2000000 0x10000>;
     };
 ...
diff --git a/Bindings/trigger-source/pwm-trigger.yaml b/Bindings/trigger-source/pwm-trigger.yaml
new file mode 100644 (file)
index 0000000..1eac200
--- /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/trigger-source/pwm-trigger.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Generic trigger source using PWM
+
+description: Remaps a PWM channel as a trigger source.
+
+maintainers:
+  - David Lechner <dlechner@baylibre.com>
+
+properties:
+  compatible:
+    const: pwm-trigger
+
+  '#trigger-source-cells':
+    const: 0
+
+  pwms:
+    maxItems: 1
+
+required:
+  - compatible
+  - '#trigger-source-cells'
+  - pwms
+
+additionalProperties: false
+
+examples:
+  - |
+    trigger {
+        compatible = "pwm-trigger";
+        #trigger-source-cells = <0>;
+        pwms = <&pwm 0 1000000 0>;
+    };
index fadbd3c..8da4081 100644 (file)
@@ -185,10 +185,20 @@ properties:
           - maxim,max5484
             # PECI-to-I2C translator for PECI-to-SMBus/I2C protocol conversion
           - maxim,max6621
+            # InTune Automatically Compensated Digital PoL Controller with Driver and PMBus Telemetry
+          - maxim,max15301
+            # 6A InTune Automatically Compensated Converter with PMBus Telemetry
+          - maxim,max15303
+            # Multiphase Master with PMBus Interface and Internal Buck Converter
+          - maxim,max20751
             # mCube 3-axis 8-bit digital accelerometer
           - mcube,mc3230
+            # mCube 3-axis 8-bit digital accelerometer
+          - mcube,mc3510c
             # Measurement Specialities I2C temperature and humidity sensor
           - meas,htu21
+            # Measurement Specialities I2C temperature and humidity sensor
+          - meas,htu31
             # Measurement Specialities I2C pressure and temperature sensor
           - meas,ms5637
             # Measurement Specialities I2C pressure and temperature sensor
@@ -380,6 +390,8 @@ properties:
           - ti,tps53676
             # TI Dual channel DCAP+ multiphase controller TPS53679
           - ti,tps53679
+            # TI Dual channel DCAP+ multiphase controller TPS53681
+          - ti,tps53681
             # TI Dual channel DCAP+ multiphase controller TPS53688
           - ti,tps53688
             # TI DC-DC converters on PMBus
@@ -387,6 +399,7 @@ properties:
           - ti,tps544b25
           - ti,tps544c20
           - ti,tps544c25
+          - ti,tps546b24
           - ti,tps546d24
             # I2C Touch-Screen Controller
           - ti,tsc2003
index 1949a15..ac11ac7 100644 (file)
@@ -33,6 +33,16 @@ properties:
   resets:
     maxItems: 1
 
+  nvmem-cells:
+    maxItems: 1
+
+  nvmem-cell-names:
+    items:
+      - const: calibration
+
+dependencies:
+  nvmem-cells: [ nvmem-cell-names ]
+
 required:
   - compatible
   - reg
@@ -58,4 +68,6 @@ examples:
         freq-table-hz = <200000000 200000000>, <38400000 38400000>;
         power-domains = <&sysc R8A779F0_PD_ALWAYS_ON>;
         resets = <&cpg 1514>;
+        nvmem-cells = <&ufs_tune>;
+        nvmem-cell-names = "calibration";
     };
diff --git a/Bindings/ufs/rockchip,rk3576-ufshc.yaml b/Bindings/ufs/rockchip,rk3576-ufshc.yaml
new file mode 100644 (file)
index 0000000..c7d17cf
--- /dev/null
@@ -0,0 +1,105 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ufs/rockchip,rk3576-ufshc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip UFS Host Controller
+
+maintainers:
+  - Shawn Lin <shawn.lin@rock-chips.com>
+
+allOf:
+  - $ref: ufs-common.yaml
+
+properties:
+  compatible:
+    const: rockchip,rk3576-ufshc
+
+  reg:
+    maxItems: 5
+
+  reg-names:
+    items:
+      - const: hci
+      - const: mphy
+      - const: hci_grf
+      - const: mphy_grf
+      - const: hci_apb
+
+  clocks:
+    maxItems: 4
+
+  clock-names:
+    items:
+      - const: core
+      - const: pclk
+      - const: pclk_mphy
+      - const: ref_out
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 4
+
+  reset-names:
+    items:
+      - const: biu
+      - const: sys
+      - const: ufs
+      - const: grf
+
+  reset-gpios:
+    maxItems: 1
+    description: |
+      GPIO specifiers for host to reset the whole UFS device including PHY and
+      memory. This gpio is active low and should choose the one whose high output
+      voltage is lower than 1.5V based on the UFS spec.
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - clocks
+  - clock-names
+  - interrupts
+  - power-domains
+  - resets
+  - reset-names
+  - reset-gpios
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/rockchip,rk3576-cru.h>
+    #include <dt-bindings/reset/rockchip,rk3576-cru.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/power/rockchip,rk3576-power.h>
+    #include <dt-bindings/pinctrl/rockchip.h>
+    #include <dt-bindings/gpio/gpio.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        ufshc: ufshc@2a2d0000 {
+            compatible = "rockchip,rk3576-ufshc";
+            reg = <0x0 0x2a2d0000 0x0 0x10000>,
+                  <0x0 0x2b040000 0x0 0x10000>,
+                  <0x0 0x2601f000 0x0 0x1000>,
+                  <0x0 0x2603c000 0x0 0x1000>,
+                  <0x0 0x2a2e0000 0x0 0x10000>;
+            reg-names = "hci", "mphy", "hci_grf", "mphy_grf", "hci_apb";
+            clocks = <&cru ACLK_UFS_SYS>, <&cru PCLK_USB_ROOT>, <&cru PCLK_MPHY>,
+                     <&cru CLK_REF_UFS_CLKOUT>;
+            clock-names = "core", "pclk", "pclk_mphy", "ref_out";
+            interrupts = <GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH>;
+            power-domains = <&power RK3576_PD_USB>;
+            resets = <&cru SRST_A_UFS_BIU>, <&cru SRST_A_UFS_SYS>, <&cru SRST_A_UFS>,
+                     <&cru SRST_P_UFS_GRF>;
+            reset-names = "biu", "sys", "ufs", "grf";
+            reset-gpios = <&gpio4 RK_PD0 GPIO_ACTIVE_LOW>;
+        };
+    };
index 00f87a5..379daca 100644 (file)
@@ -7,7 +7,6 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Xilinx SuperSpeed DWC3 USB SoC controller
 
 maintainers:
-  - Mubin Sayyed <mubin.sayyed@amd.com>
   - Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
 
 properties:
@@ -101,7 +100,6 @@ examples:
     #include <dt-bindings/dma/xlnx-zynqmp-dpdma.h>
     #include <dt-bindings/power/xlnx-zynqmp-power.h>
     #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
-    #include <dt-bindings/clock/xlnx-zynqmp-clk.h>
     #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
     #include <dt-bindings/phy/phy.h>
     axi {
@@ -113,7 +111,7 @@ examples:
             #size-cells = <0x2>;
             compatible = "xlnx,zynqmp-dwc3";
             reg = <0x0 0xff9d0000 0x0 0x100>;
-            clocks = <&zynqmp_clk USB0_BUS_REF>, <&zynqmp_clk USB3_DUAL_REF>;
+            clocks = <&zynqmp_clk 32>, <&zynqmp_clk 34>;
             clock-names = "bus_clk", "ref_clk";
             power-domains = <&zynqmp_firmware PD_USB_0>;
             resets = <&zynqmp_reset ZYNQMP_RESET_USB1_CORERESET>,
index 6ceafa4..a2b94a1 100644 (file)
@@ -51,6 +51,8 @@ properties:
       - const: core
       - const: reg
 
+  dma-coherent: true
+
   power-domains:
     maxItems: 1
 
index ef3143f..004d3eb 100644 (file)
@@ -106,6 +106,10 @@ properties:
       - description: USB3/SS(P) PHY
       - description: USB2/HS PHY
 
+  port:
+    $ref: /schemas/graph.yaml#/properties/port
+    description: Super Speed (SS) Output endpoint to a Type-C connector
+
   vusb33-supply:
     description: Regulator of USB AVDD3.3v
 
index d4e187c..21fc6bb 100644 (file)
@@ -155,6 +155,18 @@ properties:
       property is used. See graph.txt
     $ref: /schemas/graph.yaml#/properties/port
 
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: High Speed (HS) data bus.
+
+      port@1:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: Super Speed (SS) data bus.
+
   enable-manual-drd:
     $ref: /schemas/types.yaml#/definitions/flag
     description:
index b14e6f3..4e3901e 100644 (file)
@@ -9,16 +9,19 @@ title: Microchip USB2514 Hub Controller
 maintainers:
   - Fabio Estevam <festevam@gmail.com>
 
-allOf:
-  - $ref: usb-device.yaml#
-
 properties:
   compatible:
-    enum:
-      - usb424,2412
-      - usb424,2417
-      - usb424,2514
-      - usb424,2517
+    oneOf:
+      - enum:
+          - usb424,2412
+          - usb424,2417
+          - usb424,2514
+          - usb424,2517
+      - items:
+          - enum:
+              - usb424,2512
+              - usb424,2513
+          - const: usb424,2514
 
   reg: true
 
@@ -28,6 +31,9 @@ properties:
   vdd-supply:
     description: 3.3V power supply.
 
+  vdda-supply:
+    description: 3.3V analog power supply.
+
   clocks:
     description: External 24MHz clock connected to the CLKIN pin.
     maxItems: 1
@@ -43,6 +49,18 @@ patternProperties:
     $ref: /schemas/usb/usb-device.yaml
     additionalProperties: true
 
+allOf:
+  - $ref: usb-device.yaml#
+  - if:
+      not:
+        properties:
+          compatible:
+            contains:
+              const: usb424,2514
+    then:
+      properties:
+        vdda-supply: false
+
 unevaluatedProperties: false
 
 examples:
@@ -60,6 +78,7 @@ examples:
             clocks = <&clks IMX6QDL_CLK_CKO>;
             reset-gpios = <&gpio7 12 GPIO_ACTIVE_LOW>;
             vdd-supply = <&reg_3v3_hub>;
+            vdda-supply = <&reg_3v3a_hub>;
             #address-cells = <1>;
             #size-cells = <0>;
 
index e2a72de..c68c04d 100644 (file)
@@ -17,7 +17,6 @@ description:
 
 maintainers:
   - Michal Simek <michal.simek@amd.com>
-  - Mubin Sayyed <mubin.sayyed@amd.com>
   - Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
 
 properties:
diff --git a/Bindings/usb/parade,ps8830.yaml b/Bindings/usb/parade,ps8830.yaml
new file mode 100644 (file)
index 0000000..935d57f
--- /dev/null
@@ -0,0 +1,140 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/parade,ps8830.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Parade PS883x USB and DisplayPort Retimer
+
+maintainers:
+  - Abel Vesa <abel.vesa@linaro.org>
+
+properties:
+  compatible:
+    enum:
+      - parade,ps8830
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: XO Clock
+
+  reset-gpios:
+    maxItems: 1
+
+  vdd-supply:
+    description: power supply (1.07V)
+
+  vdd33-supply:
+    description: power supply (3.3V)
+
+  vdd33-cap-supply:
+    description: power supply (3.3V)
+
+  vddar-supply:
+    description: power supply (1.07V)
+
+  vddat-supply:
+    description: power supply (1.07V)
+
+  vddio-supply:
+    description: power supply (1.2V or 1.8V)
+
+  orientation-switch: true
+  retimer-switch: true
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: Super Speed (SS) Output endpoint to the Type-C connector
+
+      port@1:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        description: Super Speed (SS) Input endpoint from the Super-Speed PHY
+        unevaluatedProperties: false
+
+      port@2:
+        $ref: /schemas/graph.yaml#/properties/port
+        description:
+          Sideband Use (SBU) AUX lines endpoint to the Type-C connector for the purpose of
+          handling altmode muxing and orientation switching.
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - reset-gpios
+  - vdd-supply
+  - vdd33-supply
+  - vdd33-cap-supply
+  - vddat-supply
+  - vddio-supply
+  - orientation-switch
+  - retimer-switch
+
+allOf:
+  - $ref: usb-switch.yaml#
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        typec-mux@8 {
+            compatible = "parade,ps8830";
+            reg = <0x8>;
+
+            clocks = <&clk_rtmr_xo>;
+
+            vdd-supply = <&vreg_rtmr_1p15>;
+            vdd33-supply = <&vreg_rtmr_3p3>;
+            vdd33-cap-supply = <&vreg_rtmr_3p3>;
+            vddar-supply = <&vreg_rtmr_1p15>;
+            vddat-supply = <&vreg_rtmr_1p15>;
+            vddio-supply = <&vreg_rtmr_1p8>;
+
+            reset-gpios = <&tlmm 10 GPIO_ACTIVE_LOW>;
+
+            retimer-switch;
+            orientation-switch;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+
+                    endpoint {
+                        remote-endpoint = <&typec_con_ss>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+
+                    endpoint {
+                        remote-endpoint = <&usb_phy_ss>;
+                    };
+                };
+
+                port@2 {
+                    reg = <2>;
+
+                    endpoint {
+                        remote-endpoint = <&typec_dp_aux>;
+                    };
+                };
+            };
+        };
+    };
+...
index a2b3cf6..64137c1 100644 (file)
@@ -404,6 +404,7 @@ allOf:
           minItems: 2
           maxItems: 3
         interrupt-names:
+          minItems: 2
           items:
             - const: pwr_event
             - const: qusb2_phy
@@ -425,6 +426,7 @@ allOf:
           minItems: 3
           maxItems: 4
         interrupt-names:
+          minItems: 3
           items:
             - const: pwr_event
             - const: qusb2_phy
index 8da4d2a..ae611f7 100644 (file)
@@ -30,6 +30,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  vbus-supply:
+    description: VBUS power supply
+
   wakeup-source:
     type: boolean
 
index a21cc09..fba2cb0 100644 (file)
@@ -26,6 +26,7 @@ select:
       contains:
         enum:
           - rockchip,rk3328-dwc3
+          - rockchip,rk3562-dwc3
           - rockchip,rk3568-dwc3
           - rockchip,rk3576-dwc3
           - rockchip,rk3588-dwc3
@@ -37,6 +38,7 @@ properties:
     items:
       - enum:
           - rockchip,rk3328-dwc3
+          - rockchip,rk3562-dwc3
           - rockchip,rk3568-dwc3
           - rockchip,rk3576-dwc3
           - rockchip,rk3588-dwc3
@@ -72,6 +74,7 @@ properties:
       - enum:
           - grf_clk
           - utmi
+          - pipe
       - const: pipe
 
   power-domains:
@@ -111,6 +114,22 @@ allOf:
             - const: suspend_clk
             - const: bus_clk
             - const: grf_clk
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: rockchip,rk3562-dwc3
+    then:
+      properties:
+        clocks:
+          minItems: 4
+          maxItems: 4
+        clock-names:
+          items:
+            - const: ref_clk
+            - const: suspend_clk
+            - const: bus_clk
+            - const: pipe
   - if:
       properties:
         compatible:
index 2b3430c..256bee2 100644 (file)
@@ -11,12 +11,17 @@ maintainers:
 
 properties:
   compatible:
-    enum:
-      - google,gs101-dwusb3
-      - samsung,exynos5250-dwusb3
-      - samsung,exynos5433-dwusb3
-      - samsung,exynos7-dwusb3
-      - samsung,exynos850-dwusb3
+    oneOf:
+      - enum:
+          - google,gs101-dwusb3
+          - samsung,exynos5250-dwusb3
+          - samsung,exynos5433-dwusb3
+          - samsung,exynos7-dwusb3
+          - samsung,exynos7870-dwusb3
+          - samsung,exynos850-dwusb3
+      - items:
+          - const: samsung,exynos990-dwusb3
+          - const: samsung,exynos850-dwusb3
 
   '#address-cells':
     const: 1
@@ -52,7 +57,6 @@ required:
   - clock-names
   - ranges
   - '#size-cells'
-  - vdd10-supply
   - vdd33-supply
 
 allOf:
@@ -72,6 +76,8 @@ allOf:
             - const: susp_clk
             - const: link_aclk
             - const: link_pclk
+      required:
+        - vdd10-supply
 
   - if:
       properties:
@@ -86,6 +92,8 @@ allOf:
         clock-names:
           items:
             - const: usbdrd30
+      required:
+        - vdd10-supply
 
   - if:
       properties:
@@ -103,6 +111,8 @@ allOf:
             - const: susp_clk
             - const: phyclk
             - const: pipe_pclk
+      required:
+        - vdd10-supply
 
   - if:
       properties:
@@ -119,6 +129,24 @@ allOf:
             - const: usbdrd30
             - const: usbdrd30_susp_clk
             - const: usbdrd30_axius_clk
+      required:
+        - vdd10-supply
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos7870-dwusb3
+    then:
+      properties:
+        clocks:
+          minItems: 3
+          maxItems: 3
+        clock-names:
+          items:
+            - const: bus_early
+            - const: ref
+            - const: ctrl
 
   - if:
       properties:
@@ -134,6 +162,8 @@ allOf:
           items:
             - const: bus_early
             - const: ref
+      required:
+        - vdd10-supply
 
 additionalProperties: false
 
index c956053..71249b6 100644 (file)
@@ -65,6 +65,17 @@ properties:
       mode.
     type: boolean
 
+  snps,reserved-endpoints:
+    description:
+      Reserve endpoints for other needs, e.g, for tracing control and output.
+      When set, the driver will avoid using them for the regular USB transfers.
+    $ref: /schemas/types.yaml#/definitions/uint8-array
+    minItems: 1
+    maxItems: 30
+    items:
+      minimum: 2
+      maximum: 31
+
   snps,dis-start-transfer-quirk:
     description:
       When set, disable isoc START TRANSFER command failure SW work-around
index da890ee..c676956 100644 (file)
@@ -39,8 +39,10 @@ properties:
 
   reg:
     description: the number of the USB hub port or the USB host-controller
-      port to which this device is attached. The range is 1-255.
-    maxItems: 1
+      port to which this device is attached.
+    items:
+      - minimum: 1
+        maximum: 255
 
   "#address-cells":
     description: should be 1 for hub nodes with device nodes,
index a7f75fe..f295aa9 100644 (file)
@@ -7,7 +7,6 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Xilinx udc controller
 
 maintainers:
-  - Mubin Sayyed <mubin.sayyed@amd.com>
   - Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
 
 properties:
index 5079ca6..86f6a19 100644 (file)
@@ -18,7 +18,7 @@ patternProperties:
   # DO NOT ADD NEW PROPERTIES TO THIS LIST
   "^(at25|bm|devbus|dmacap|dsa|exynos|fsi[ab]|gpio-fan|gpio-key|gpio|gpmc|hdmi|i2c-gpio),.*": true
   "^(keypad|m25p|max8952|max8997|max8998|mpmc),.*": true
-  "^(pinctrl-single|#pinctrl-single|PowerPC),.*": true
+  "^(pciclass|pinctrl-single|#pinctrl-single|PowerPC),.*": true
   "^(pl022|pxa-mmc|rcar_sound|rotary-encoder|s5m8767|sdhci),.*": true
   "^(simple-audio-card|st-plgpio|st-spics|ts),.*": true
 
@@ -147,6 +147,8 @@ patternProperties:
     description: Arctic Sand
   "^arcx,.*":
     description: arcx Inc. / Archronix Inc.
+  "^ariaboard,.*":
+    description: Shanghai Novotech Co., Ltd. (Ariaboard)
   "^aries,.*":
     description: Aries Embedded GmbH
   "^arm,.*":
@@ -338,6 +340,8 @@ patternProperties:
     description: Crystalfontz America, Inc.
   "^csky,.*":
     description: Hangzhou C-SKY Microsystems Co., Ltd
+  "^csot,.*":
+    description: Guangzhou China Star Optoelectronics Technology Co., Ltd
   "^csq,.*":
     description: Shenzen Chuangsiqi Technology Co.,Ltd.
   "^ctera,.*":
@@ -593,6 +597,8 @@ patternProperties:
     description: GlobalTop Technology, Inc.
   "^gmt,.*":
     description: Global Mixed-mode Technology, Inc.
+  "^gocontroll,.*":
+    description: GOcontroll Modular Embedded Electronics B.V.
   "^goldelico,.*":
     description: Golden Delicious Computers GmbH & Co. KG
   "^goodix,.*":
@@ -1031,6 +1037,8 @@ patternProperties:
     description: Neofidelity Inc.
   "^neonode,.*":
     description: Neonode Inc.
+  "^netcube,.*":
+    description: NetCube Systems Austria
   "^netgear,.*":
     description: NETGEAR
   "^netlogic,.*":
@@ -1202,6 +1210,8 @@ patternProperties:
     description: Primux Trading, S.L.
   "^probox2,.*":
     description: PROBOX2 (by W2COMP Co., Ltd.)
+  "^pri,.*":
+    description: Priva
   "^prt,.*":
     description: Protonic Holland
   "^pulsedlight,.*":
@@ -1267,7 +1277,7 @@ patternProperties:
   "^riscv,.*":
     description: RISC-V Foundation
   "^rockchip,.*":
-    description: Fuzhou Rockchip Electronics Co., Ltd
+    description: Rockchip Electronics Co., Ltd.
   "^rocktech,.*":
     description: ROCKTECH DISPLAYS LIMITED
   "^rohm,.*":
@@ -1737,6 +1747,8 @@ patternProperties:
     description: Shenzhen Yashi Changhua Intelligent Technology Co., Ltd.
   "^ysoft,.*":
     description: Y Soft Corporation a.s.
+  "^yuridenki,.*":
+    description: Yuridenki-Shokai Co. Ltd.
   "^zarlink,.*":
     description: Zarlink Semiconductor
   "^zealz,.*":
index 64c8f73..b35ac03 100644 (file)
@@ -32,6 +32,7 @@ properties:
       - items:
           - const: allwinner,sun20i-d1-wdt-reset
           - const: allwinner,sun20i-d1-wdt
+      - const: allwinner,sun55i-a523-wdt
 
   reg:
     maxItems: 1
@@ -60,6 +61,7 @@ if:
           - allwinner,sun20i-d1-wdt-reset
           - allwinner,sun50i-r329-wdt
           - allwinner,sun50i-r329-wdt-reset
+          - allwinner,sun55i-a523-wdt
 
 then:
   properties:
index a09686b..6ec391b 100644 (file)
@@ -22,6 +22,10 @@ properties:
           - const: fsl,imx8ulp-wdt
           - const: fsl,imx7ulp-wdt
       - const: fsl,imx93-wdt
+      - items:
+          - enum:
+              - fsl,imx94-wdt
+          - const: fsl,imx93-wdt
 
   reg:
     maxItems: 1
index 29ada89..3e0a874 100644 (file)
@@ -75,6 +75,10 @@ properties:
               - renesas,r8a779h0-wdt     # R-Car V4M
           - const: renesas,rcar-gen4-wdt # R-Car Gen4
 
+      - items:
+          - const: renesas,r9a09g047-wdt # RZ/G3E
+          - const: renesas,r9a09g057-wdt # RZ/V2H(P)
+
       - const: renesas,r9a09g057-wdt       # RZ/V2H(P)
 
   reg:
index 28199b3..0ee9de9 100644 (file)
                                            Default is <d#1024 d#480>.
        - rotate-display (empty) : rotate display 180 degrees.
 
-      ii) Xilinx SystemACE
-
-      The Xilinx SystemACE device is used to program FPGAs from an FPGA
-      bitstream stored on a CF card.  It can also be used as a generic CF
-      interface device.
-
-      Optional properties:
-       - 8-bit (empty) : Set this property for SystemACE in 8 bit mode
-
       iii) Xilinx EMAC and Xilinx TEMAC
 
       Xilinx Ethernet devices.  In addition to general xilinx properties
       property, and may include other common network device properties
       like local-mac-address.
 
-      iv) Xilinx Uartlite
-
-      Xilinx uartlite devices are simple fixed speed serial ports.
-
-      Required properties:
-       - current-speed : Baud rate of uartlite
-
       v) Xilinx hwicap
 
                Xilinx hwicap devices provide access to the configuration logic
                - compatible : should contain "xlnx,xps-hwicap-1.00.a" or
                                "xlnx,opb-hwicap-1.00.b".
 
-      vi) Xilinx Uart 16550
-
-      Xilinx UART 16550 devices are very similar to the NS16550 but with
-      different register spacing and an offset from the base address.
-
-      Required properties:
-       - clock-frequency : Frequency of the clock input
-       - reg-offset : A value of 3 is required
-       - reg-shift : A value of 2 is required
-
       vii) Xilinx USB Host controller
 
       The Xilinx USB host controller is EHCI compatible but with a different
index bd5cd10..0e87f61 100644 (file)
 #define CLK_VDO1_DPINTF                                58
 #define CLK_VDO1_DISP_MONITOR_DPINTF           59
 #define CLK_VDO1_26M_SLOW                      60
-#define CLK_VDO1_NR_CLK                                61
+#define CLK_VDO1_DPI1_HDMI                     61
 
 #endif /* _DT_BINDINGS_CLK_MT8188_H */
diff --git a/include/dt-bindings/clock/mediatek,mtmips-sysc.h b/include/dt-bindings/clock/mediatek,mtmips-sysc.h
new file mode 100644 (file)
index 0000000..a03335b
--- /dev/null
@@ -0,0 +1,130 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Author: Sergio Paracuellos <sergio.paracuellos@gmail.com>
+ */
+
+#ifndef _DT_BINDINGS_CLK_MTMIPS_H
+#define _DT_BINDINGS_CLK_MTMIPS_H
+
+/* Ralink RT-2880 clocks */
+
+#define RT2880_CLK_XTAL                0
+#define RT2880_CLK_CPU         1
+#define RT2880_CLK_BUS         2
+#define RT2880_CLK_TIMER       3
+#define RT2880_CLK_WATCHDOG    4
+#define RT2880_CLK_UART                5
+#define RT2880_CLK_I2C         6
+#define RT2880_CLK_UARTLITE    7
+#define RT2880_CLK_ETHERNET    8
+#define RT2880_CLK_WMAC                9
+
+/* Ralink RT-305X clocks */
+
+#define RT305X_CLK_XTAL                0
+#define RT305X_CLK_CPU         1
+#define RT305X_CLK_BUS         2
+#define RT305X_CLK_TIMER       3
+#define RT305X_CLK_WATCHDOG    4
+#define RT305X_CLK_UART                5
+#define RT305X_CLK_I2C         6
+#define RT305X_CLK_I2S         7
+#define RT305X_CLK_SPI1                8
+#define RT305X_CLK_SPI2                9
+#define RT305X_CLK_UARTLITE    10
+#define RT305X_CLK_ETHERNET    11
+#define RT305X_CLK_WMAC                12
+
+/* Ralink RT-3352 clocks */
+
+#define RT3352_CLK_XTAL                0
+#define RT3352_CLK_CPU         1
+#define RT3352_CLK_PERIPH      2
+#define RT3352_CLK_BUS         3
+#define RT3352_CLK_TIMER       4
+#define RT3352_CLK_WATCHDOG    5
+#define RT3352_CLK_UART                6
+#define RT3352_CLK_I2C         7
+#define RT3352_CLK_I2S         8
+#define RT3352_CLK_SPI1                9
+#define RT3352_CLK_SPI2                10
+#define RT3352_CLK_UARTLITE    11
+#define RT3352_CLK_ETHERNET    12
+#define RT3352_CLK_WMAC                13
+
+/* Ralink RT-3883 clocks */
+
+#define RT3883_CLK_XTAL                0
+#define RT3883_CLK_CPU         1
+#define RT3883_CLK_BUS         2
+#define RT3883_CLK_PERIPH      3
+#define RT3883_CLK_TIMER       4
+#define RT3883_CLK_WATCHDOG    5
+#define RT3883_CLK_UART                6
+#define RT3883_CLK_I2C         7
+#define RT3883_CLK_I2S         8
+#define RT3883_CLK_SPI1                9
+#define RT3883_CLK_SPI2                10
+#define RT3883_CLK_UARTLITE    11
+#define RT3883_CLK_ETHERNET    12
+#define RT3883_CLK_WMAC                13
+
+/* Ralink RT-5350 clocks */
+
+#define RT5350_CLK_XTAL                0
+#define RT5350_CLK_CPU         1
+#define RT5350_CLK_BUS         2
+#define RT5350_CLK_PERIPH      3
+#define RT5350_CLK_TIMER       4
+#define RT5350_CLK_WATCHDOG    5
+#define RT5350_CLK_UART                6
+#define RT5350_CLK_I2C         7
+#define RT5350_CLK_I2S         8
+#define RT5350_CLK_SPI1                9
+#define RT5350_CLK_SPI2                10
+#define RT5350_CLK_UARTLITE    11
+#define RT5350_CLK_ETHERNET    12
+#define RT5350_CLK_WMAC                13
+
+/* Ralink MT-7620 clocks */
+
+#define MT7620_CLK_XTAL                0
+#define MT7620_CLK_PLL         1
+#define MT7620_CLK_CPU         2
+#define MT7620_CLK_PERIPH      3
+#define MT7620_CLK_BUS         4
+#define MT7620_CLK_BBPPLL      5
+#define MT7620_CLK_SDHC                6
+#define MT7620_CLK_TIMER       7
+#define MT7620_CLK_WATCHDOG    8
+#define MT7620_CLK_UART                9
+#define MT7620_CLK_I2C         10
+#define MT7620_CLK_I2S         11
+#define MT7620_CLK_SPI1                12
+#define MT7620_CLK_SPI2                13
+#define MT7620_CLK_UARTLITE    14
+#define MT7620_CLK_MMC         15
+#define MT7620_CLK_WMAC                16
+
+/* Ralink MT-76X8 clocks */
+
+#define MT76X8_CLK_XTAL                0
+#define MT76X8_CLK_CPU         1
+#define MT76X8_CLK_BBPPLL      2
+#define MT76X8_CLK_PCMI2S      3
+#define MT76X8_CLK_PERIPH      4
+#define MT76X8_CLK_BUS         5
+#define MT76X8_CLK_SDHC                6
+#define MT76X8_CLK_TIMER       7
+#define MT76X8_CLK_WATCHDOG    8
+#define MT76X8_CLK_I2C         9
+#define MT76X8_CLK_I2S         10
+#define MT76X8_CLK_SPI1                11
+#define MT76X8_CLK_SPI2                12
+#define MT76X8_CLK_UART0       13
+#define MT76X8_CLK_UART1       14
+#define MT76X8_CLK_UART2       15
+#define MT76X8_CLK_MMC         16
+#define MT76X8_CLK_WMAC                17
+
+#endif /* _DT_BINDINGS_CLK_MTMIPS_H */
diff --git a/include/dt-bindings/clock/qcom,dsi-phy-28nm.h b/include/dt-bindings/clock/qcom,dsi-phy-28nm.h
new file mode 100644 (file)
index 0000000..ab94d58
--- /dev/null
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_DSI_PHY_28NM_H
+#define _DT_BINDINGS_CLK_QCOM_DSI_PHY_28NM_H
+
+#define DSI_BYTE_PLL_CLK               0
+#define DSI_PIXEL_PLL_CLK              1
+
+#endif
index df8a6f3..74c22f6 100644 (file)
 #define GCC_USB_30_BCR                 7
 #define GCC_USB_PHY_CFG_AHB2PHY_BCR    8
 #define GCC_MSS_RESTART                        9
+#define GCC_SDCC1_BCR                  10
+#define GCC_SDCC2_BCR                  11
 
 #endif
index f238aa4..0e7c319 100644 (file)
 #define GCC_PCIE1_PIPE_CLK                             211
 #define GCC_PCIE2_PIPE_CLK                             212
 #define GCC_PCIE3_PIPE_CLK                             213
+#define GPLL0_OUT_AUX                                  214
 #endif
diff --git a/include/dt-bindings/clock/qcom,ipq9574-nsscc.h b/include/dt-bindings/clock/qcom,ipq9574-nsscc.h
new file mode 100644 (file)
index 0000000..21a16dc
--- /dev/null
@@ -0,0 +1,152 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2023, 2025 The Linux Foundation. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_CLOCK_IPQ_NSSCC_9574_H
+#define _DT_BINDINGS_CLOCK_IPQ_NSSCC_9574_H
+
+#define NSS_CC_CE_APB_CLK                                      0
+#define NSS_CC_CE_AXI_CLK                                      1
+#define NSS_CC_CE_CLK_SRC                                      2
+#define NSS_CC_CFG_CLK_SRC                                     3
+#define NSS_CC_CLC_AXI_CLK                                     4
+#define NSS_CC_CLC_CLK_SRC                                     5
+#define NSS_CC_CRYPTO_CLK                                      6
+#define NSS_CC_CRYPTO_CLK_SRC                                  7
+#define NSS_CC_CRYPTO_PPE_CLK                                  8
+#define NSS_CC_HAQ_AHB_CLK                                     9
+#define NSS_CC_HAQ_AXI_CLK                                     10
+#define NSS_CC_HAQ_CLK_SRC                                     11
+#define NSS_CC_IMEM_AHB_CLK                                    12
+#define NSS_CC_IMEM_CLK_SRC                                    13
+#define NSS_CC_IMEM_QSB_CLK                                    14
+#define NSS_CC_INT_CFG_CLK_SRC                                 15
+#define NSS_CC_NSS_CSR_CLK                                     16
+#define NSS_CC_NSSNOC_CE_APB_CLK                               17
+#define NSS_CC_NSSNOC_CE_AXI_CLK                               18
+#define NSS_CC_NSSNOC_CLC_AXI_CLK                              19
+#define NSS_CC_NSSNOC_CRYPTO_CLK                               20
+#define NSS_CC_NSSNOC_HAQ_AHB_CLK                              21
+#define NSS_CC_NSSNOC_HAQ_AXI_CLK                              22
+#define NSS_CC_NSSNOC_IMEM_AHB_CLK                             23
+#define NSS_CC_NSSNOC_IMEM_QSB_CLK                             24
+#define NSS_CC_NSSNOC_NSS_CSR_CLK                              25
+#define NSS_CC_NSSNOC_PPE_CFG_CLK                              26
+#define NSS_CC_NSSNOC_PPE_CLK                                  27
+#define NSS_CC_NSSNOC_UBI32_AHB0_CLK                           28
+#define NSS_CC_NSSNOC_UBI32_AXI0_CLK                           29
+#define NSS_CC_NSSNOC_UBI32_INT0_AHB_CLK                       30
+#define NSS_CC_NSSNOC_UBI32_NC_AXI0_1_CLK                      31
+#define NSS_CC_NSSNOC_UBI32_NC_AXI0_CLK                                32
+#define NSS_CC_PORT1_MAC_CLK                                   33
+#define NSS_CC_PORT1_RX_CLK                                    34
+#define NSS_CC_PORT1_RX_CLK_SRC                                        35
+#define NSS_CC_PORT1_RX_DIV_CLK_SRC                            36
+#define NSS_CC_PORT1_TX_CLK                                    37
+#define NSS_CC_PORT1_TX_CLK_SRC                                        38
+#define NSS_CC_PORT1_TX_DIV_CLK_SRC                            39
+#define NSS_CC_PORT2_MAC_CLK                                   40
+#define NSS_CC_PORT2_RX_CLK                                    41
+#define NSS_CC_PORT2_RX_CLK_SRC                                        42
+#define NSS_CC_PORT2_RX_DIV_CLK_SRC                            43
+#define NSS_CC_PORT2_TX_CLK                                    44
+#define NSS_CC_PORT2_TX_CLK_SRC                                        45
+#define NSS_CC_PORT2_TX_DIV_CLK_SRC                            46
+#define NSS_CC_PORT3_MAC_CLK                                   47
+#define NSS_CC_PORT3_RX_CLK                                    48
+#define NSS_CC_PORT3_RX_CLK_SRC                                        49
+#define NSS_CC_PORT3_RX_DIV_CLK_SRC                            50
+#define NSS_CC_PORT3_TX_CLK                                    51
+#define NSS_CC_PORT3_TX_CLK_SRC                                        52
+#define NSS_CC_PORT3_TX_DIV_CLK_SRC                            53
+#define NSS_CC_PORT4_MAC_CLK                                   54
+#define NSS_CC_PORT4_RX_CLK                                    55
+#define NSS_CC_PORT4_RX_CLK_SRC                                        56
+#define NSS_CC_PORT4_RX_DIV_CLK_SRC                            57
+#define NSS_CC_PORT4_TX_CLK                                    58
+#define NSS_CC_PORT4_TX_CLK_SRC                                        59
+#define NSS_CC_PORT4_TX_DIV_CLK_SRC                            60
+#define NSS_CC_PORT5_MAC_CLK                                   61
+#define NSS_CC_PORT5_RX_CLK                                    62
+#define NSS_CC_PORT5_RX_CLK_SRC                                        63
+#define NSS_CC_PORT5_RX_DIV_CLK_SRC                            64
+#define NSS_CC_PORT5_TX_CLK                                    65
+#define NSS_CC_PORT5_TX_CLK_SRC                                        66
+#define NSS_CC_PORT5_TX_DIV_CLK_SRC                            67
+#define NSS_CC_PORT6_MAC_CLK                                   68
+#define NSS_CC_PORT6_RX_CLK                                    69
+#define NSS_CC_PORT6_RX_CLK_SRC                                        70
+#define NSS_CC_PORT6_RX_DIV_CLK_SRC                            71
+#define NSS_CC_PORT6_TX_CLK                                    72
+#define NSS_CC_PORT6_TX_CLK_SRC                                        73
+#define NSS_CC_PORT6_TX_DIV_CLK_SRC                            74
+#define NSS_CC_PPE_CLK_SRC                                     75
+#define NSS_CC_PPE_EDMA_CFG_CLK                                        76
+#define NSS_CC_PPE_EDMA_CLK                                    77
+#define NSS_CC_PPE_SWITCH_BTQ_CLK                              78
+#define NSS_CC_PPE_SWITCH_CFG_CLK                              79
+#define NSS_CC_PPE_SWITCH_CLK                                  80
+#define NSS_CC_PPE_SWITCH_IPE_CLK                              81
+#define NSS_CC_UBI0_CLK_SRC                                    82
+#define NSS_CC_UBI0_DIV_CLK_SRC                                        83
+#define NSS_CC_UBI1_CLK_SRC                                    84
+#define NSS_CC_UBI1_DIV_CLK_SRC                                        85
+#define NSS_CC_UBI2_CLK_SRC                                    86
+#define NSS_CC_UBI2_DIV_CLK_SRC                                        87
+#define NSS_CC_UBI32_AHB0_CLK                                  88
+#define NSS_CC_UBI32_AHB1_CLK                                  89
+#define NSS_CC_UBI32_AHB2_CLK                                  90
+#define NSS_CC_UBI32_AHB3_CLK                                  91
+#define NSS_CC_UBI32_AXI0_CLK                                  92
+#define NSS_CC_UBI32_AXI1_CLK                                  93
+#define NSS_CC_UBI32_AXI2_CLK                                  94
+#define NSS_CC_UBI32_AXI3_CLK                                  95
+#define NSS_CC_UBI32_CORE0_CLK                                 96
+#define NSS_CC_UBI32_CORE1_CLK                                 97
+#define NSS_CC_UBI32_CORE2_CLK                                 98
+#define NSS_CC_UBI32_CORE3_CLK                                 99
+#define NSS_CC_UBI32_INTR0_AHB_CLK                             100
+#define NSS_CC_UBI32_INTR1_AHB_CLK                             101
+#define NSS_CC_UBI32_INTR2_AHB_CLK                             102
+#define NSS_CC_UBI32_INTR3_AHB_CLK                             103
+#define NSS_CC_UBI32_NC_AXI0_CLK                               104
+#define NSS_CC_UBI32_NC_AXI1_CLK                               105
+#define NSS_CC_UBI32_NC_AXI2_CLK                               106
+#define NSS_CC_UBI32_NC_AXI3_CLK                               107
+#define NSS_CC_UBI32_UTCM0_CLK                                 108
+#define NSS_CC_UBI32_UTCM1_CLK                                 109
+#define NSS_CC_UBI32_UTCM2_CLK                                 110
+#define NSS_CC_UBI32_UTCM3_CLK                                 111
+#define NSS_CC_UBI3_CLK_SRC                                    112
+#define NSS_CC_UBI3_DIV_CLK_SRC                                        113
+#define NSS_CC_UBI_AXI_CLK_SRC                                 114
+#define NSS_CC_UBI_NC_AXI_BFDCD_CLK_SRC                                115
+#define NSS_CC_UNIPHY_PORT1_RX_CLK                             116
+#define NSS_CC_UNIPHY_PORT1_TX_CLK                             117
+#define NSS_CC_UNIPHY_PORT2_RX_CLK                             118
+#define NSS_CC_UNIPHY_PORT2_TX_CLK                             119
+#define NSS_CC_UNIPHY_PORT3_RX_CLK                             120
+#define NSS_CC_UNIPHY_PORT3_TX_CLK                             121
+#define NSS_CC_UNIPHY_PORT4_RX_CLK                             122
+#define NSS_CC_UNIPHY_PORT4_TX_CLK                             123
+#define NSS_CC_UNIPHY_PORT5_RX_CLK                             124
+#define NSS_CC_UNIPHY_PORT5_TX_CLK                             125
+#define NSS_CC_UNIPHY_PORT6_RX_CLK                             126
+#define NSS_CC_UNIPHY_PORT6_TX_CLK                             127
+#define NSS_CC_XGMAC0_PTP_REF_CLK                              128
+#define NSS_CC_XGMAC0_PTP_REF_DIV_CLK_SRC                      129
+#define NSS_CC_XGMAC1_PTP_REF_CLK                              130
+#define NSS_CC_XGMAC1_PTP_REF_DIV_CLK_SRC                      131
+#define NSS_CC_XGMAC2_PTP_REF_CLK                              132
+#define NSS_CC_XGMAC2_PTP_REF_DIV_CLK_SRC                      133
+#define NSS_CC_XGMAC3_PTP_REF_CLK                              134
+#define NSS_CC_XGMAC3_PTP_REF_DIV_CLK_SRC                      135
+#define NSS_CC_XGMAC4_PTP_REF_CLK                              136
+#define NSS_CC_XGMAC4_PTP_REF_DIV_CLK_SRC                      137
+#define NSS_CC_XGMAC5_PTP_REF_CLK                              138
+#define NSS_CC_XGMAC5_PTP_REF_DIV_CLK_SRC                      139
+#define UBI32_PLL                                              140
+#define UBI32_PLL_MAIN                                         141
+
+#endif
index 46309c9..1477a75 100644 (file)
 #define RPM_SMD_BIMC_FREQ_LOG                  124
 #define RPM_SMD_LN_BB_CLK_PIN                  125
 #define RPM_SMD_LN_BB_A_CLK_PIN                        126
+#define RPM_SMD_BB_CLK3                                127
+#define RPM_SMD_BB_CLK3_A                      128
+#define RPM_SMD_BB_CLK3_PIN                    129
+#define RPM_SMD_BB_CLK3_A_PIN                  130
 
 #endif
index 01e14ab..dd988cc 100644 (file)
 #define PCLK_PERI              351
 #define PCLK_DDRUPCTL          352
 #define PCLK_PUBL              353
+#define PCLK_CIF0              354
+#define PCLK_CIF1              355
 
 /* hclk gates */
 #define HCLK_SDMMC             448
diff --git a/include/dt-bindings/clock/rockchip,rk3528-cru.h b/include/dt-bindings/clock/rockchip,rk3528-cru.h
new file mode 100644 (file)
index 0000000..55a448f
--- /dev/null
@@ -0,0 +1,453 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/*
+ * Copyright (c) 2022 Rockchip Electronics Co. Ltd.
+ * Copyright (c) 2024 Yao Zi <ziyao@disroot.org>
+ * Author: Joseph Chen <chenjh@rock-chips.com>
+ */
+
+#ifndef _DT_BINDINGS_CLK_ROCKCHIP_RK3528_H
+#define _DT_BINDINGS_CLK_ROCKCHIP_RK3528_H
+
+/* cru-clocks indices */
+#define PLL_APLL                       0
+#define PLL_CPLL                       1
+#define PLL_GPLL                       2
+#define PLL_PPLL                       3
+#define PLL_DPLL                       4
+#define ARMCLK                         5
+#define XIN_OSC0_HALF                  6
+#define CLK_MATRIX_50M_SRC             7
+#define CLK_MATRIX_100M_SRC            8
+#define CLK_MATRIX_150M_SRC            9
+#define CLK_MATRIX_200M_SRC            10
+#define CLK_MATRIX_250M_SRC            11
+#define CLK_MATRIX_300M_SRC            12
+#define CLK_MATRIX_339M_SRC            13
+#define CLK_MATRIX_400M_SRC            14
+#define CLK_MATRIX_500M_SRC            15
+#define CLK_MATRIX_600M_SRC            16
+#define CLK_UART0_SRC                  17
+#define CLK_UART0_FRAC                 18
+#define SCLK_UART0                     19
+#define CLK_UART1_SRC                  20
+#define CLK_UART1_FRAC                 21
+#define SCLK_UART1                     22
+#define CLK_UART2_SRC                  23
+#define CLK_UART2_FRAC                 24
+#define SCLK_UART2                     25
+#define CLK_UART3_SRC                  26
+#define CLK_UART3_FRAC                 27
+#define SCLK_UART3                     28
+#define CLK_UART4_SRC                  29
+#define CLK_UART4_FRAC                 30
+#define SCLK_UART4                     31
+#define CLK_UART5_SRC                  32
+#define CLK_UART5_FRAC                 33
+#define SCLK_UART5                     34
+#define CLK_UART6_SRC                  35
+#define CLK_UART6_FRAC                 36
+#define SCLK_UART6                     37
+#define CLK_UART7_SRC                  38
+#define CLK_UART7_FRAC                 39
+#define SCLK_UART7                     40
+#define CLK_I2S0_2CH_SRC               41
+#define CLK_I2S0_2CH_FRAC              42
+#define MCLK_I2S0_2CH_SAI_SRC          43
+#define CLK_I2S3_8CH_SRC               44
+#define CLK_I2S3_8CH_FRAC              45
+#define MCLK_I2S3_8CH_SAI_SRC          46
+#define CLK_I2S1_8CH_SRC               47
+#define CLK_I2S1_8CH_FRAC              48
+#define MCLK_I2S1_8CH_SAI_SRC          49
+#define CLK_I2S2_2CH_SRC               50
+#define CLK_I2S2_2CH_FRAC              51
+#define MCLK_I2S2_2CH_SAI_SRC          52
+#define CLK_SPDIF_SRC                  53
+#define CLK_SPDIF_FRAC                 54
+#define MCLK_SPDIF_SRC                 55
+#define DCLK_VOP_SRC0                  56
+#define DCLK_VOP_SRC1                  57
+#define CLK_HSM                                58
+#define CLK_CORE_SRC_ACS               59
+#define CLK_CORE_SRC_PVTMUX            60
+#define CLK_CORE_SRC                   61
+#define CLK_CORE                       62
+#define ACLK_M_CORE_BIU                        63
+#define CLK_CORE_PVTPLL_SRC            64
+#define PCLK_DBG                       65
+#define SWCLKTCK                       66
+#define CLK_SCANHS_CORE                        67
+#define CLK_SCANHS_ACLKM_CORE          68
+#define CLK_SCANHS_PCLK_DBG            69
+#define CLK_SCANHS_PCLK_CPU_BIU                70
+#define PCLK_CPU_ROOT                  71
+#define PCLK_CORE_GRF                  72
+#define PCLK_DAPLITE_BIU               73
+#define PCLK_CPU_BIU                   74
+#define CLK_REF_PVTPLL_CORE            75
+#define ACLK_BUS_VOPGL_ROOT            76
+#define ACLK_BUS_VOPGL_BIU             77
+#define ACLK_BUS_H_ROOT                        78
+#define ACLK_BUS_H_BIU                 79
+#define ACLK_BUS_ROOT                  80
+#define HCLK_BUS_ROOT                  81
+#define PCLK_BUS_ROOT                  82
+#define ACLK_BUS_M_ROOT                        83
+#define ACLK_SYSMEM_BIU                        84
+#define CLK_TIMER_ROOT                 85
+#define ACLK_BUS_BIU                   86
+#define HCLK_BUS_BIU                   87
+#define PCLK_BUS_BIU                   88
+#define PCLK_DFT2APB                   89
+#define PCLK_BUS_GRF                   90
+#define ACLK_BUS_M_BIU                 91
+#define ACLK_GIC                       92
+#define ACLK_SPINLOCK                  93
+#define ACLK_DMAC                      94
+#define PCLK_TIMER                     95
+#define CLK_TIMER0                     96
+#define CLK_TIMER1                     97
+#define CLK_TIMER2                     98
+#define CLK_TIMER3                     99
+#define CLK_TIMER4                     100
+#define CLK_TIMER5                     101
+#define PCLK_JDBCK_DAP                 102
+#define CLK_JDBCK_DAP                  103
+#define PCLK_WDT_NS                    104
+#define TCLK_WDT_NS                    105
+#define HCLK_TRNG_NS                   106
+#define PCLK_UART0                     107
+#define PCLK_DMA2DDR                   108
+#define ACLK_DMA2DDR                   109
+#define PCLK_PWM0                      110
+#define CLK_PWM0                       111
+#define CLK_CAPTURE_PWM0               112
+#define PCLK_PWM1                      113
+#define CLK_PWM1                       114
+#define CLK_CAPTURE_PWM1               115
+#define PCLK_SCR                       116
+#define ACLK_DCF                       117
+#define PCLK_INTMUX                    118
+#define CLK_PPLL_I                     119
+#define CLK_PPLL_MUX                   120
+#define CLK_PPLL_100M_MATRIX           121
+#define CLK_PPLL_50M_MATRIX            122
+#define CLK_REF_PCIE_INNER_PHY         123
+#define CLK_REF_PCIE_100M_PHY          124
+#define ACLK_VPU_L_ROOT                        125
+#define CLK_GMAC1_VPU_25M              126
+#define CLK_PPLL_125M_MATRIX           127
+#define ACLK_VPU_ROOT                  128
+#define HCLK_VPU_ROOT                  129
+#define PCLK_VPU_ROOT                  130
+#define ACLK_VPU_BIU                   131
+#define HCLK_VPU_BIU                   132
+#define PCLK_VPU_BIU                   133
+#define ACLK_VPU                       134
+#define HCLK_VPU                       135
+#define PCLK_CRU_PCIE                  136
+#define PCLK_VPU_GRF                   137
+#define HCLK_SFC                       138
+#define SCLK_SFC                       139
+#define CCLK_SRC_EMMC                  140
+#define HCLK_EMMC                      141
+#define ACLK_EMMC                      142
+#define BCLK_EMMC                      143
+#define TCLK_EMMC                      144
+#define PCLK_GPIO1                     145
+#define DBCLK_GPIO1                    146
+#define ACLK_VPU_L_BIU                 147
+#define PCLK_VPU_IOC                   148
+#define HCLK_SAI_I2S0                  149
+#define MCLK_SAI_I2S0                  150
+#define HCLK_SAI_I2S2                  151
+#define MCLK_SAI_I2S2                  152
+#define PCLK_ACODEC                    153
+#define MCLK_ACODEC_TX                 154
+#define PCLK_GPIO3                     155
+#define DBCLK_GPIO3                    156
+#define PCLK_SPI1                      157
+#define CLK_SPI1                       158
+#define SCLK_IN_SPI1                   159
+#define PCLK_UART2                     160
+#define PCLK_UART5                     161
+#define PCLK_UART6                     162
+#define PCLK_UART7                     163
+#define PCLK_I2C3                      164
+#define CLK_I2C3                       165
+#define PCLK_I2C5                      166
+#define CLK_I2C5                       167
+#define PCLK_I2C6                      168
+#define CLK_I2C6                       169
+#define ACLK_MAC_VPU                   170
+#define PCLK_MAC_VPU                   171
+#define CLK_GMAC1_RMII_VPU             172
+#define CLK_GMAC1_SRC_VPU              173
+#define PCLK_PCIE                      174
+#define CLK_PCIE_AUX                   175
+#define ACLK_PCIE                      176
+#define HCLK_PCIE_SLV                  177
+#define HCLK_PCIE_DBI                  178
+#define PCLK_PCIE_PHY                  179
+#define PCLK_PIPE_GRF                  180
+#define CLK_PIPE_USB3OTG_COMBO         181
+#define CLK_UTMI_USB3OTG               182
+#define CLK_PCIE_PIPE_PHY              183
+#define CCLK_SRC_SDIO0                 184
+#define HCLK_SDIO0                     185
+#define CCLK_SRC_SDIO1                 186
+#define HCLK_SDIO1                     187
+#define CLK_TS_0                       188
+#define CLK_TS_1                       189
+#define PCLK_CAN2                      190
+#define CLK_CAN2                       191
+#define PCLK_CAN3                      192
+#define CLK_CAN3                       193
+#define PCLK_SARADC                    194
+#define CLK_SARADC                     195
+#define PCLK_TSADC                     196
+#define CLK_TSADC                      197
+#define CLK_TSADC_TSEN                 198
+#define ACLK_USB3OTG                   199
+#define CLK_REF_USB3OTG                        200
+#define CLK_SUSPEND_USB3OTG            201
+#define ACLK_GPU_ROOT                  202
+#define PCLK_GPU_ROOT                  203
+#define ACLK_GPU_BIU                   204
+#define PCLK_GPU_BIU                   205
+#define ACLK_GPU                       206
+#define CLK_GPU_PVTPLL_SRC             207
+#define ACLK_GPU_MALI                  208
+#define HCLK_RKVENC_ROOT               209
+#define ACLK_RKVENC_ROOT               210
+#define PCLK_RKVENC_ROOT               211
+#define HCLK_RKVENC_BIU                        212
+#define ACLK_RKVENC_BIU                        213
+#define PCLK_RKVENC_BIU                        214
+#define HCLK_RKVENC                    215
+#define ACLK_RKVENC                    216
+#define CLK_CORE_RKVENC                        217
+#define HCLK_SAI_I2S1                  218
+#define MCLK_SAI_I2S1                  219
+#define PCLK_I2C1                      220
+#define CLK_I2C1                       221
+#define PCLK_I2C0                      222
+#define CLK_I2C0                       223
+#define CLK_UART_JTAG                  224
+#define PCLK_SPI0                      225
+#define CLK_SPI0                       226
+#define SCLK_IN_SPI0                   227
+#define PCLK_GPIO4                     228
+#define DBCLK_GPIO4                    229
+#define PCLK_RKVENC_IOC                        230
+#define HCLK_SPDIF                     231
+#define MCLK_SPDIF                     232
+#define HCLK_PDM                       233
+#define MCLK_PDM                       234
+#define PCLK_UART1                     235
+#define PCLK_UART3                     236
+#define PCLK_RKVENC_GRF                        237
+#define PCLK_CAN0                      238
+#define CLK_CAN0                       239
+#define PCLK_CAN1                      240
+#define CLK_CAN1                       241
+#define ACLK_VO_ROOT                   242
+#define HCLK_VO_ROOT                   243
+#define PCLK_VO_ROOT                   244
+#define ACLK_VO_BIU                    245
+#define HCLK_VO_BIU                    246
+#define PCLK_VO_BIU                    247
+#define HCLK_RGA2E                     248
+#define ACLK_RGA2E                     249
+#define CLK_CORE_RGA2E                 250
+#define HCLK_VDPP                      251
+#define ACLK_VDPP                      252
+#define CLK_CORE_VDPP                  253
+#define PCLK_VO_GRF                    254
+#define PCLK_CRU                       255
+#define ACLK_VOP_ROOT                  256
+#define ACLK_VOP_BIU                   257
+#define HCLK_VOP                       258
+#define DCLK_VOP0                      259
+#define DCLK_VOP1                      260
+#define ACLK_VOP                       261
+#define PCLK_HDMI                      262
+#define CLK_SFR_HDMI                   263
+#define CLK_CEC_HDMI                   264
+#define CLK_SPDIF_HDMI                 265
+#define CLK_HDMIPHY_TMDSSRC            266
+#define CLK_HDMIPHY_PREP               267
+#define PCLK_HDMIPHY                   268
+#define HCLK_HDCP_KEY                  269
+#define ACLK_HDCP                      270
+#define HCLK_HDCP                      271
+#define PCLK_HDCP                      272
+#define HCLK_CVBS                      273
+#define DCLK_CVBS                      274
+#define DCLK_4X_CVBS                   275
+#define ACLK_JPEG_DECODER              276
+#define HCLK_JPEG_DECODER              277
+#define ACLK_VO_L_ROOT                 278
+#define ACLK_VO_L_BIU                  279
+#define ACLK_MAC_VO                    280
+#define PCLK_MAC_VO                    281
+#define CLK_GMAC0_SRC                  282
+#define CLK_GMAC0_RMII_50M             283
+#define CLK_GMAC0_TX                   284
+#define CLK_GMAC0_RX                   285
+#define ACLK_JPEG_ROOT                 286
+#define ACLK_JPEG_BIU                  287
+#define HCLK_SAI_I2S3                  288
+#define MCLK_SAI_I2S3                  289
+#define CLK_MACPHY                     290
+#define PCLK_VCDCPHY                   291
+#define PCLK_GPIO2                     292
+#define DBCLK_GPIO2                    293
+#define PCLK_VO_IOC                    294
+#define CCLK_SRC_SDMMC0                        295
+#define HCLK_SDMMC0                    296
+#define PCLK_OTPC_NS                   297
+#define CLK_SBPI_OTPC_NS               298
+#define CLK_USER_OTPC_NS               299
+#define CLK_HDMIHDP0                   300
+#define HCLK_USBHOST                   301
+#define HCLK_USBHOST_ARB               302
+#define CLK_USBHOST_OHCI               303
+#define CLK_USBHOST_UTMI               304
+#define PCLK_UART4                     305
+#define PCLK_I2C4                      306
+#define CLK_I2C4                       307
+#define PCLK_I2C7                      308
+#define CLK_I2C7                       309
+#define PCLK_USBPHY                    310
+#define CLK_REF_USBPHY                 311
+#define HCLK_RKVDEC_ROOT               312
+#define ACLK_RKVDEC_ROOT_NDFT          313
+#define PCLK_DDRPHY_CRU                        314
+#define HCLK_RKVDEC_BIU                        315
+#define ACLK_RKVDEC_BIU                        316
+#define ACLK_RKVDEC                    317
+#define HCLK_RKVDEC                    318
+#define CLK_HEVC_CA_RKVDEC             319
+#define ACLK_RKVDEC_PVTMUX_ROOT                320
+#define CLK_RKVDEC_PVTPLL_SRC          321
+#define PCLK_DDR_ROOT                  322
+#define PCLK_DDR_BIU                   323
+#define PCLK_DDRC                      324
+#define PCLK_DDRMON                    325
+#define CLK_TIMER_DDRMON               326
+#define PCLK_MSCH_BIU                  327
+#define PCLK_DDR_GRF                   328
+#define PCLK_DDR_HWLP                  329
+#define PCLK_DDRPHY                    330
+#define CLK_MSCH_BIU                   331
+#define ACLK_DDR_UPCTL                 332
+#define CLK_DDR_UPCTL                  333
+#define CLK_DDRMON                     334
+#define ACLK_DDR_SCRAMBLE              335
+#define ACLK_SPLIT                     336
+#define CLK_DDRC_SRC                   337
+#define CLK_DDR_PHY                    338
+#define PCLK_OTPC_S                    339
+#define CLK_SBPI_OTPC_S                        340
+#define CLK_USER_OTPC_S                        341
+#define PCLK_KEYREADER                 342
+#define PCLK_BUS_SGRF                  343
+#define PCLK_STIMER                    344
+#define CLK_STIMER0                    345
+#define CLK_STIMER1                    346
+#define PCLK_WDT_S                     347
+#define TCLK_WDT_S                     348
+#define HCLK_TRNG_S                    349
+#define HCLK_BOOTROM                   350
+#define PCLK_DCF                       351
+#define ACLK_SYSMEM                    352
+#define HCLK_TSP                       353
+#define ACLK_TSP                       354
+#define CLK_CORE_TSP                   355
+#define CLK_OTPC_ARB                   356
+#define PCLK_OTP_MASK                  357
+#define CLK_PMC_OTP                    358
+#define PCLK_PMU_ROOT                  359
+#define HCLK_PMU_ROOT                  360
+#define PCLK_I2C2                      361
+#define CLK_I2C2                       362
+#define HCLK_PMU_BIU                   363
+#define PCLK_PMU_BIU                   364
+#define FCLK_MCU                       365
+#define RTC_CLK_MCU                    366
+#define PCLK_OSCCHK                    367
+#define CLK_PMU_MCU_JTAG               368
+#define PCLK_PMU                       369
+#define PCLK_GPIO0                     370
+#define DBCLK_GPIO0                    371
+#define XIN_OSC0_DIV                   372
+#define CLK_DEEPSLOW                   373
+#define CLK_DDR_FAIL_SAFE              374
+#define PCLK_PMU_HP_TIMER              375
+#define CLK_PMU_HP_TIMER               376
+#define CLK_PMU_32K_HP_TIMER           377
+#define PCLK_PMU_IOC                   378
+#define PCLK_PMU_CRU                   379
+#define PCLK_PMU_GRF                   380
+#define PCLK_PMU_WDT                   381
+#define TCLK_PMU_WDT                   382
+#define PCLK_PMU_MAILBOX               383
+#define PCLK_SCRKEYGEN                 384
+#define CLK_SCRKEYGEN                  385
+#define CLK_PVTM_OSCCHK                        386
+#define CLK_REFOUT                     387
+#define CLK_PVTM_PMU                   388
+#define PCLK_PVTM_PMU                  389
+#define PCLK_PMU_SGRF                  390
+#define HCLK_PMU_SRAM                  391
+#define CLK_UART0                      392
+#define CLK_UART1                      393
+#define CLK_UART2                      394
+#define CLK_UART3                      395
+#define CLK_UART4                      396
+#define CLK_UART5                      397
+#define CLK_UART6                      398
+#define CLK_UART7                      399
+#define MCLK_I2S0_2CH_SAI_SRC_PRE      400
+#define MCLK_I2S1_8CH_SAI_SRC_PRE      401
+#define MCLK_I2S2_2CH_SAI_SRC_PRE      402
+#define MCLK_I2S3_8CH_SAI_SRC_PRE      403
+#define MCLK_SDPDIF_SRC_PRE            404
+
+/* scmi-clocks indices */
+#define SCMI_PCLK_KEYREADER            0
+#define SCMI_HCLK_KLAD                 1
+#define SCMI_PCLK_KLAD                 2
+#define SCMI_HCLK_TRNG_S               3
+#define SCMI_HCLK_CRYPTO_S             4
+#define SCMI_PCLK_WDT_S                        5
+#define SCMI_TCLK_WDT_S                        6
+#define SCMI_PCLK_STIMER               7
+#define SCMI_CLK_STIMER0               8
+#define SCMI_CLK_STIMER1               9
+#define SCMI_PCLK_OTP_MASK             10
+#define SCMI_PCLK_OTPC_S               11
+#define SCMI_CLK_SBPI_OTPC_S           12
+#define SCMI_CLK_USER_OTPC_S           13
+#define SCMI_CLK_PMC_OTP               14
+#define SCMI_CLK_OTPC_ARB              15
+#define SCMI_CLK_CORE_TSP              16
+#define SCMI_ACLK_TSP                  17
+#define SCMI_HCLK_TSP                  18
+#define SCMI_PCLK_DCF                  19
+#define SCMI_CLK_DDR                   20
+#define SCMI_CLK_CPU                   21
+#define SCMI_CLK_GPU                   22
+#define SCMI_CORE_CRYPTO               23
+#define SCMI_ACLK_CRYPTO               24
+#define SCMI_PKA_CRYPTO                        25
+#define SCMI_HCLK_CRYPTO               26
+#define SCMI_CORE_CRYPTO_S             27
+#define SCMI_ACLK_CRYPTO_S             28
+#define SCMI_PKA_CRYPTO_S              29
+#define SCMI_CORE_KLAD                 30
+#define SCMI_ACLK_KLAD                 31
+#define SCMI_HCLK_TRNG                 32
+
+#endif // _DT_BINDINGS_CLK_ROCKCHIP_RK3528_H
diff --git a/include/dt-bindings/clock/rockchip,rk3562-cru.h b/include/dt-bindings/clock/rockchip,rk3562-cru.h
new file mode 100644 (file)
index 0000000..a5b0b15
--- /dev/null
@@ -0,0 +1,379 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2022-2025 Rockchip Electronics Co., Ltd.
+ * Author: Finley Xiao <finley.xiao@rock-chips.com>
+ */
+
+#ifndef _DT_BINDINGS_CLK_ROCKCHIP_RK3562_H
+#define _DT_BINDINGS_CLK_ROCKCHIP_RK3562_H
+
+/* cru-clocks indices */
+
+/* cru plls */
+#define PLL_DMPLL0                     0
+#define PLL_APLL                       1
+#define PLL_GPLL                       2
+#define PLL_VPLL                       3
+#define PLL_HPLL                       4
+#define PLL_CPLL                       5
+#define PLL_DPLL                       6
+#define PLL_DMPLL1                     7
+
+/* cru clocks */
+#define ARMCLK                         8
+#define CLK_GPU                                9
+#define ACLK_RKNN                      10
+#define CLK_DDR                                11
+#define CLK_MATRIX_50M_SRC             12
+#define CLK_MATRIX_100M_SRC            13
+#define CLK_MATRIX_125M_SRC            14
+#define CLK_MATRIX_200M_SRC            15
+#define CLK_MATRIX_300M_SRC            16
+#define ACLK_TOP                       17
+#define ACLK_TOP_VIO                   18
+#define CLK_CAM0_OUT2IO                        19
+#define CLK_CAM1_OUT2IO                        20
+#define CLK_CAM2_OUT2IO                        21
+#define CLK_CAM3_OUT2IO                        22
+#define ACLK_BUS                       23
+#define HCLK_BUS                       24
+#define PCLK_BUS                       25
+#define PCLK_I2C1                      26
+#define PCLK_I2C2                      27
+#define PCLK_I2C3                      28
+#define PCLK_I2C4                      29
+#define PCLK_I2C5                      30
+#define CLK_I2C                                31
+#define CLK_I2C1                       32
+#define CLK_I2C2                       33
+#define CLK_I2C3                       34
+#define CLK_I2C4                       35
+#define CLK_I2C5                       36
+#define DCLK_BUS_GPIO                  37
+#define DCLK_BUS_GPIO3                 38
+#define DCLK_BUS_GPIO4                 39
+#define PCLK_TIMER                     40
+#define CLK_TIMER0                     41
+#define CLK_TIMER1                     42
+#define CLK_TIMER2                     43
+#define CLK_TIMER3                     44
+#define CLK_TIMER4                     45
+#define CLK_TIMER5                     46
+#define PCLK_STIMER                    47
+#define CLK_STIMER0                    48
+#define CLK_STIMER1                    49
+#define PCLK_WDTNS                     50
+#define CLK_WDTNS                      51
+#define PCLK_GRF                       52
+#define PCLK_SGRF                      53
+#define PCLK_MAILBOX                   54
+#define PCLK_INTC                      55
+#define ACLK_BUS_GIC400                        56
+#define ACLK_BUS_SPINLOCK              57
+#define ACLK_DCF                       58
+#define PCLK_DCF                       59
+#define FCLK_BUS_CM0_CORE              60
+#define CLK_BUS_CM0_RTC                        61
+#define HCLK_ICACHE                    62
+#define HCLK_DCACHE                    63
+#define PCLK_TSADC                     64
+#define CLK_TSADC                      65
+#define CLK_TSADC_TSEN                 66
+#define PCLK_DFT2APB                   67
+#define CLK_SARADC_VCCIO156            68
+#define PCLK_GMAC                      69
+#define ACLK_GMAC                      70
+#define CLK_GMAC_125M_CRU_I            71
+#define CLK_GMAC_50M_CRU_I             72
+#define CLK_GMAC_50M_O                 73
+#define CLK_GMAC_ETH_OUT2IO            74
+#define PCLK_APB2ASB_VCCIO156          75
+#define PCLK_TO_VCCIO156               76
+#define PCLK_DSIPHY                    77
+#define PCLK_DSITX                     78
+#define PCLK_CPU_EMA_DET               79
+#define PCLK_HASH                      80
+#define PCLK_TOPCRU                    81
+#define PCLK_ASB2APB_VCCIO156          82
+#define PCLK_IOC_VCCIO156              83
+#define PCLK_GPIO3_VCCIO156            84
+#define PCLK_GPIO4_VCCIO156            85
+#define PCLK_SARADC_VCCIO156           86
+#define PCLK_MAC100                    87
+#define ACLK_MAC100                    89
+#define CLK_MAC100_50M_MATRIX          90
+#define HCLK_CORE                      91
+#define PCLK_DDR                       92
+#define CLK_MSCH_BRG_BIU               93
+#define PCLK_DDR_HWLP                  94
+#define PCLK_DDR_UPCTL                 95
+#define PCLK_DDR_PHY                   96
+#define PCLK_DDR_DFICTL                        97
+#define PCLK_DDR_DMA2DDR               98
+#define PCLK_DDR_MON                   99
+#define TMCLK_DDR_MON                  100
+#define PCLK_DDR_GRF                   101
+#define PCLK_DDR_CRU                   102
+#define PCLK_SUBDDR_CRU                        103
+#define CLK_GPU_PRE                    104
+#define ACLK_GPU_PRE                   105
+#define CLK_GPU_BRG                    107
+#define CLK_NPU_PRE                    108
+#define HCLK_NPU_PRE                   109
+#define HCLK_RKNN                      111
+#define ACLK_PERI                      112
+#define HCLK_PERI                      113
+#define PCLK_PERI                      114
+#define PCLK_PERICRU                   115
+#define HCLK_SAI0                      116
+#define CLK_SAI0_SRC                   117
+#define CLK_SAI0_FRAC                  118
+#define CLK_SAI0                       119
+#define MCLK_SAI0                      120
+#define MCLK_SAI0_OUT2IO               121
+#define HCLK_SAI1                      122
+#define CLK_SAI1_SRC                   123
+#define CLK_SAI1_FRAC                  124
+#define CLK_SAI1                       125
+#define MCLK_SAI1                      126
+#define MCLK_SAI1_OUT2IO               127
+#define HCLK_SAI2                      128
+#define CLK_SAI2_SRC                   129
+#define CLK_SAI2_FRAC                  130
+#define CLK_SAI2                       131
+#define MCLK_SAI2                      132
+#define MCLK_SAI2_OUT2IO               133
+#define HCLK_DSM                       134
+#define CLK_DSM                                135
+#define HCLK_PDM                       136
+#define MCLK_PDM                       137
+#define HCLK_SPDIF                     138
+#define CLK_SPDIF_SRC                  139
+#define CLK_SPDIF_FRAC                 140
+#define CLK_SPDIF                      141
+#define MCLK_SPDIF                     142
+#define HCLK_SDMMC0                    143
+#define CCLK_SDMMC0                    144
+#define HCLK_SDMMC1                    145
+#define CCLK_SDMMC1                    146
+#define SCLK_SDMMC0_DRV                        147
+#define SCLK_SDMMC0_SAMPLE             148
+#define SCLK_SDMMC1_DRV                        149
+#define SCLK_SDMMC1_SAMPLE             150
+#define HCLK_EMMC                      151
+#define ACLK_EMMC                      152
+#define CCLK_EMMC                      153
+#define BCLK_EMMC                      154
+#define TMCLK_EMMC                     155
+#define SCLK_SFC                       156
+#define HCLK_SFC                       157
+#define HCLK_USB2HOST                  158
+#define HCLK_USB2HOST_ARB              159
+#define PCLK_SPI1                      160
+#define CLK_SPI1                       161
+#define SCLK_IN_SPI1                   162
+#define PCLK_SPI2                      163
+#define CLK_SPI2                       164
+#define SCLK_IN_SPI2                   165
+#define PCLK_UART1                     166
+#define PCLK_UART2                     167
+#define PCLK_UART3                     168
+#define PCLK_UART4                     169
+#define PCLK_UART5                     170
+#define PCLK_UART6                     171
+#define PCLK_UART7                     172
+#define PCLK_UART8                     173
+#define PCLK_UART9                     174
+#define CLK_UART1_SRC                  175
+#define CLK_UART1_FRAC                 176
+#define CLK_UART1                      177
+#define SCLK_UART1                     178
+#define CLK_UART2_SRC                  179
+#define CLK_UART2_FRAC                 180
+#define CLK_UART2                      181
+#define SCLK_UART2                     182
+#define CLK_UART3_SRC                  183
+#define CLK_UART3_FRAC                 184
+#define CLK_UART3                      185
+#define SCLK_UART3                     186
+#define CLK_UART4_SRC                  187
+#define CLK_UART4_FRAC                 188
+#define CLK_UART4                      189
+#define SCLK_UART4                     190
+#define CLK_UART5_SRC                  191
+#define CLK_UART5_FRAC                 192
+#define CLK_UART5                      193
+#define SCLK_UART5                     194
+#define CLK_UART6_SRC                  195
+#define CLK_UART6_FRAC                 196
+#define CLK_UART6                      197
+#define SCLK_UART6                     198
+#define CLK_UART7_SRC                  199
+#define CLK_UART7_FRAC                 200
+#define CLK_UART7                      201
+#define SCLK_UART7                     202
+#define CLK_UART8_SRC                  203
+#define CLK_UART8_FRAC                 204
+#define CLK_UART8                      205
+#define SCLK_UART8                     206
+#define CLK_UART9_SRC                  207
+#define CLK_UART9_FRAC                 208
+#define CLK_UART9                      209
+#define SCLK_UART9                     210
+#define PCLK_PWM1_PERI                 211
+#define CLK_PWM1_PERI                  212
+#define CLK_CAPTURE_PWM1_PERI          213
+#define PCLK_PWM2_PERI                 214
+#define CLK_PWM2_PERI                  215
+#define CLK_CAPTURE_PWM2_PERI          216
+#define PCLK_PWM3_PERI                 217
+#define CLK_PWM3_PERI                  218
+#define CLK_CAPTURE_PWM3_PERI          219
+#define PCLK_CAN0                      220
+#define CLK_CAN0                       221
+#define PCLK_CAN1                      222
+#define CLK_CAN1                       223
+#define ACLK_CRYPTO                    224
+#define HCLK_CRYPTO                    225
+#define PCLK_CRYPTO                    226
+#define CLK_CORE_CRYPTO                        227
+#define CLK_PKA_CRYPTO                 228
+#define HCLK_KLAD                      229
+#define PCLK_KEY_READER                        230
+#define HCLK_RK_RNG_NS                 231
+#define HCLK_RK_RNG_S                  232
+#define HCLK_TRNG_NS                   233
+#define HCLK_TRNG_S                    234
+#define HCLK_CRYPTO_S                  235
+#define PCLK_PERI_WDT                  236
+#define TCLK_PERI_WDT                  237
+#define ACLK_SYSMEM                    238
+#define HCLK_BOOTROM                   239
+#define PCLK_PERI_GRF                  240
+#define ACLK_DMAC                      241
+#define ACLK_RKDMAC                    242
+#define PCLK_OTPC_NS                   243
+#define CLK_SBPI_OTPC_NS               244
+#define CLK_USER_OTPC_NS               245
+#define PCLK_OTPC_S                    246
+#define CLK_SBPI_OTPC_S                        247
+#define CLK_USER_OTPC_S                        248
+#define CLK_OTPC_ARB                   249
+#define PCLK_OTPPHY                    250
+#define PCLK_USB2PHY                   251
+#define PCLK_PIPEPHY                   252
+#define PCLK_SARADC                    253
+#define CLK_SARADC                     254
+#define PCLK_IOC_VCCIO234              255
+#define PCLK_PERI_GPIO1                        256
+#define PCLK_PERI_GPIO2                        257
+#define DCLK_PERI_GPIO                 258
+#define DCLK_PERI_GPIO1                        259
+#define DCLK_PERI_GPIO2                        260
+#define ACLK_PHP                       261
+#define PCLK_PHP                       262
+#define ACLK_PCIE20_MST                        263
+#define ACLK_PCIE20_SLV                        264
+#define ACLK_PCIE20_DBI                        265
+#define PCLK_PCIE20                    266
+#define CLK_PCIE20_AUX                 267
+#define ACLK_USB3OTG                   268
+#define CLK_USB3OTG_SUSPEND            269
+#define CLK_USB3OTG_REF                        270
+#define CLK_PIPEPHY_REF_FUNC           271
+#define CLK_200M_PMU                   272
+#define CLK_RTC_32K                    273
+#define CLK_RTC32K_FRAC                        274
+#define BUSCLK_PDPMU0                  275
+#define PCLK_PMU0_CRU                  276
+#define PCLK_PMU0_PMU                  277
+#define CLK_PMU0_PMU                   278
+#define PCLK_PMU0_HP_TIMER             279
+#define CLK_PMU0_HP_TIMER              280
+#define CLK_PMU0_32K_HP_TIMER          281
+#define PCLK_PMU0_PVTM                 282
+#define CLK_PMU0_PVTM                  283
+#define PCLK_IOC_PMUIO                 284
+#define PCLK_PMU0_GPIO0                        285
+#define DBCLK_PMU0_GPIO0               286
+#define PCLK_PMU0_GRF                  287
+#define PCLK_PMU0_SGRF                 288
+#define CLK_DDR_FAIL_SAFE              289
+#define PCLK_PMU0_SCRKEYGEN            290
+#define PCLK_PMU1_CRU                  291
+#define HCLK_PMU1_MEM                  292
+#define PCLK_PMU0_I2C0                 293
+#define CLK_PMU0_I2C0                  294
+#define PCLK_PMU1_UART0                        295
+#define CLK_PMU1_UART0_SRC             296
+#define CLK_PMU1_UART0_FRAC            297
+#define CLK_PMU1_UART0                 298
+#define SCLK_PMU1_UART0                        299
+#define PCLK_PMU1_SPI0                 300
+#define CLK_PMU1_SPI0                  301
+#define SCLK_IN_PMU1_SPI0              302
+#define PCLK_PMU1_PWM0                 303
+#define CLK_PMU1_PWM0                  304
+#define CLK_CAPTURE_PMU1_PWM0          305
+#define CLK_PMU1_WIFI                  306
+#define FCLK_PMU1_CM0_CORE             307
+#define CLK_PMU1_CM0_RTC               308
+#define PCLK_PMU1_WDTNS                        309
+#define CLK_PMU1_WDTNS                 310
+#define PCLK_PMU1_MAILBOX              311
+#define CLK_PIPEPHY_DIV                        312
+#define CLK_PIPEPHY_XIN24M             313
+#define CLK_PIPEPHY_REF                        314
+#define CLK_24M_SSCSRC                 315
+#define CLK_USB2PHY_XIN24M             316
+#define CLK_USB2PHY_REF                        317
+#define CLK_MIPIDSIPHY_XIN24M          318
+#define CLK_MIPIDSIPHY_REF             319
+#define ACLK_RGA_PRE                   320
+#define HCLK_RGA_PRE                   321
+#define ACLK_RGA                       322
+#define HCLK_RGA                       323
+#define CLK_RGA_CORE                   324
+#define ACLK_JDEC                      325
+#define HCLK_JDEC                      326
+#define ACLK_VDPU_PRE                  327
+#define CLK_RKVDEC_HEVC_CA             328
+#define HCLK_VDPU_PRE                  329
+#define ACLK_RKVDEC                    330
+#define HCLK_RKVDEC                    331
+#define CLK_RKVENC_CORE                        332
+#define ACLK_VEPU_PRE                  333
+#define HCLK_VEPU_PRE                  334
+#define ACLK_RKVENC                    335
+#define HCLK_RKVENC                    336
+#define ACLK_VI                                337
+#define HCLK_VI                                338
+#define PCLK_VI                                339
+#define ACLK_ISP                       340
+#define HCLK_ISP                       341
+#define CLK_ISP                                342
+#define ACLK_VICAP                     343
+#define HCLK_VICAP                     344
+#define DCLK_VICAP                     345
+#define CSIRX0_CLK_DATA                        346
+#define CSIRX1_CLK_DATA                        347
+#define CSIRX2_CLK_DATA                        348
+#define CSIRX3_CLK_DATA                        349
+#define PCLK_CSIHOST0                  350
+#define PCLK_CSIHOST1                  351
+#define PCLK_CSIHOST2                  352
+#define PCLK_CSIHOST3                  353
+#define PCLK_CSIPHY0                   354
+#define PCLK_CSIPHY1                   355
+#define ACLK_VO_PRE                    356
+#define HCLK_VO_PRE                    357
+#define ACLK_VOP                       358
+#define HCLK_VOP                       359
+#define DCLK_VOP                       360
+#define DCLK_VOP1                      361
+#define ACLK_CRYPTO_S                  362
+#define PCLK_CRYPTO_S                  363
+#define CLK_CORE_CRYPTO_S              364
+#define CLK_PKA_CRYPTO_S               365
+
+#endif
index 25aed29..f576e61 100644 (file)
 #define PCLK_EDP_S                     569
 #define ACLK_KLAD                      570
 
+/* SCMI clocks, use these when changing clocks through SCMI */
+#define SCMI_ARMCLK_L                  10
+#define SCMI_ARMCLK_B                  11
+#define SCMI_CLK_GPU                   456
+
 #endif
diff --git a/include/dt-bindings/clock/samsung,exynos2200-cmu.h b/include/dt-bindings/clock/samsung,exynos2200-cmu.h
new file mode 100644 (file)
index 0000000..310552b
--- /dev/null
@@ -0,0 +1,431 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2025 Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
+ * Author: Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
+ *
+ * Device Tree binding constants for Exynos2200 clock controller.
+ */
+
+#ifndef _DT_BINDINGS_CLOCK_EXYNOS2200_H
+#define _DT_BINDINGS_CLOCK_EXYNOS2200_H
+
+/* CMU_TOP */
+#define CLK_FOUT_SHARED0_PLL                   1
+#define CLK_FOUT_SHARED1_PLL                   2
+#define CLK_FOUT_SHARED2_PLL                   3
+#define CLK_FOUT_SHARED3_PLL                   4
+#define CLK_FOUT_SHARED4_PLL                   5
+#define CLK_FOUT_MMC_PLL                       6
+#define CLK_FOUT_SHARED_MIF_PLL                        7
+
+#define CLK_MOUT_CMU_CP_MPLL_CLK_D2_USER       8
+#define CLK_MOUT_CMU_CP_MPLL_CLK_USER          9
+#define CLK_MOUT_CMU_AUD_AUDIF0                        10
+#define CLK_MOUT_CMU_AUD_AUDIF1                        11
+#define CLK_MOUT_CMU_AUD_CPU                   12
+#define CLK_MOUT_CMU_CPUCL0_DBG_NOC            13
+#define CLK_MOUT_CMU_CPUCL0_SWITCH             14
+#define CLK_MOUT_CMU_CPUCL1_SWITCH             15
+#define CLK_MOUT_CMU_CPUCL2_SWITCH             16
+#define CLK_MOUT_CMU_DNC_NOC                   17
+#define CLK_MOUT_CMU_DPUB_NOC                  18
+#define CLK_MOUT_CMU_DPUF_NOC                  19
+#define CLK_MOUT_CMU_DSP_NOC                   20
+#define CLK_MOUT_CMU_DSU_SWITCH                        21
+#define CLK_MOUT_CMU_G3D_SWITCH                        22
+#define CLK_MOUT_CMU_GNPU_NOC                  23
+#define CLK_MOUT_CMU_UFS_MMC_CARD              24
+#define CLK_MOUT_CMU_M2M_NOC                   25
+#define CLK_MOUT_CMU_NOCL0_NOC                 26
+#define CLK_MOUT_CMU_NOCL1A_NOC                        27
+#define CLK_MOUT_CMU_NOCL1B_NOC0               28
+#define CLK_MOUT_CMU_NOCL1C_NOC                        29
+#define CLK_MOUT_CMU_SDMA_NOC                  30
+#define CLK_MOUT_CMU_CP_HISPEEDY_CLK           31
+#define CLK_MOUT_CMU_CP_SHARED0_CLK            32
+#define CLK_MOUT_CMU_CP_SHARED2_CLK            33
+#define CLK_MOUT_CMU_MUX_ALIVE_NOC             34
+#define CLK_MOUT_CMU_MUX_AUD_AUDIF0            35
+#define CLK_MOUT_CMU_MUX_AUD_AUDIF1            36
+#define CLK_MOUT_CMU_MUX_AUD_CPU               37
+#define CLK_MOUT_CMU_MUX_AUD_NOC               38
+#define CLK_MOUT_CMU_MUX_BRP_NOC               39
+#define CLK_MOUT_CMU_MUX_CIS_CLK0              40
+#define CLK_MOUT_CMU_MUX_CIS_CLK1              41
+#define CLK_MOUT_CMU_MUX_CIS_CLK2              42
+#define CLK_MOUT_CMU_MUX_CIS_CLK3              43
+#define CLK_MOUT_CMU_MUX_CIS_CLK4              44
+#define CLK_MOUT_CMU_MUX_CIS_CLK5              45
+#define CLK_MOUT_CMU_MUX_CIS_CLK6              46
+#define CLK_MOUT_CMU_MUX_CIS_CLK7              47
+#define CLK_MOUT_CMU_MUX_CMU_BOOST             48
+#define CLK_MOUT_CMU_MUX_CMU_BOOST_CAM         49
+#define CLK_MOUT_CMU_MUX_CMU_BOOST_CPU         50
+#define CLK_MOUT_CMU_MUX_CMU_BOOST_MIF         51
+#define CLK_MOUT_CMU_MUX_CPUCL0_DBG_NOC                52
+#define CLK_MOUT_CMU_MUX_CPUCL0_NOCP           53
+#define CLK_MOUT_CMU_MUX_CPUCL0_SWITCH         54
+#define CLK_MOUT_CMU_MUX_CPUCL1_SWITCH         55
+#define CLK_MOUT_CMU_MUX_CPUCL2_SWITCH         56
+#define CLK_MOUT_CMU_MUX_CSIS_DCPHY            57
+#define CLK_MOUT_CMU_MUX_CSIS_NOC              58
+#define CLK_MOUT_CMU_MUX_CSIS_OIS_MCU          59
+#define CLK_MOUT_CMU_MUX_CSTAT_NOC             60
+#define CLK_MOUT_CMU_MUX_DNC_NOC               61
+#define CLK_MOUT_CMU_MUX_DPUB                  62
+#define CLK_MOUT_CMU_MUX_DPUB_ALT              63
+#define CLK_MOUT_CMU_MUX_DPUB_DSIM             64
+#define CLK_MOUT_CMU_MUX_DPUF                  65
+#define CLK_MOUT_CMU_MUX_DPUF_ALT              66
+#define CLK_MOUT_CMU_MUX_DSP_NOC               67
+#define CLK_MOUT_CMU_MUX_DSU_SWITCH            68
+#define CLK_MOUT_CMU_MUX_G3D_NOCP              69
+#define CLK_MOUT_CMU_MUX_G3D_SWITCH            70
+#define CLK_MOUT_CMU_MUX_GNPU_NOC              71
+#define CLK_MOUT_CMU_MUX_HSI0_DPGTC            72
+#define CLK_MOUT_CMU_MUX_HSI0_DPOSC            73
+#define CLK_MOUT_CMU_MUX_HSI0_NOC              74
+#define CLK_MOUT_CMU_MUX_HSI0_USB32DRD         75
+#define CLK_MOUT_CMU_MUX_UFS_MMC_CARD          76
+#define CLK_MOUT_CMU_MUX_HSI1_NOC              77
+#define CLK_MOUT_CMU_MUX_HSI1_PCIE             78
+#define CLK_MOUT_CMU_MUX_UFS_UFS_EMBD          79
+#define CLK_MOUT_CMU_MUX_LME_LME               80
+#define CLK_MOUT_CMU_MUX_LME_NOC               81
+#define CLK_MOUT_CMU_MUX_M2M_NOC               82
+#define CLK_MOUT_CMU_MUX_MCSC_MCSC             83
+#define CLK_MOUT_CMU_MUX_MCSC_NOC              84
+#define CLK_MOUT_CMU_MUX_MFC0_MFC0             85
+#define CLK_MOUT_CMU_MUX_MFC0_WFD              86
+#define CLK_MOUT_CMU_MUX_MFC1_MFC1             87
+#define CLK_MOUT_CMU_MUX_MIF_NOCP              88
+#define CLK_MOUT_CMU_MUX_MIF_SWITCH            89
+#define CLK_MOUT_CMU_MUX_NOCL0_NOC             90
+#define CLK_MOUT_CMU_MUX_NOCL1A_NOC            91
+#define CLK_MOUT_CMU_MUX_NOCL1B_NOC0           92
+#define CLK_MOUT_CMU_MUX_NOCL1B_NOC1           93
+#define CLK_MOUT_CMU_MUX_NOCL1C_NOC            94
+#define CLK_MOUT_CMU_MUX_PERIC0_IP0            95
+#define CLK_MOUT_CMU_MUX_PERIC0_IP1            96
+#define CLK_MOUT_CMU_MUX_PERIC0_NOC            97
+#define CLK_MOUT_CMU_MUX_PERIC1_IP0            98
+#define CLK_MOUT_CMU_MUX_PERIC1_IP1            99
+#define CLK_MOUT_CMU_MUX_PERIC1_NOC            100
+#define CLK_MOUT_CMU_MUX_PERIC2_IP0            101
+#define CLK_MOUT_CMU_MUX_PERIC2_IP1            102
+#define CLK_MOUT_CMU_MUX_PERIC2_NOC            103
+#define CLK_MOUT_CMU_MUX_PERIS_GIC             104
+#define CLK_MOUT_CMU_MUX_PERIS_NOC             105
+#define CLK_MOUT_CMU_MUX_SDMA_NOC              106
+#define CLK_MOUT_CMU_MUX_SSP_NOC               107
+#define CLK_MOUT_CMU_MUX_VTS_DMIC              108
+#define CLK_MOUT_CMU_MUX_YUVP_NOC              109
+#define CLK_MOUT_CMU_MUX_CMU_CMUREF            110
+#define CLK_MOUT_CMU_MUX_CP_HISPEEDY_CLK       111
+#define CLK_MOUT_CMU_MUX_CP_SHARED0_CLK                112
+#define CLK_MOUT_CMU_MUX_CP_SHARED1_CLK                113
+#define CLK_MOUT_CMU_MUX_CP_SHARED2_CLK                114
+#define CLK_MOUT_CMU_M2M_FRC                   115
+#define CLK_MOUT_CMU_MCSC_MCSC                 116
+#define CLK_MOUT_CMU_MCSC_NOC                  117
+#define CLK_MOUT_CMU_MUX_M2M_FRC               118
+#define CLK_MOUT_CMU_MUX_UFS_NOC               119
+
+#define CLK_DOUT_CMU_ALIVE_NOC                 120
+#define CLK_DOUT_CMU_AUD_NOC                   121
+#define CLK_DOUT_CMU_BRP_NOC                   122
+#define CLK_DOUT_CMU_CMU_BOOST                 123
+#define CLK_DOUT_CMU_CMU_BOOST_CAM             124
+#define CLK_DOUT_CMU_CMU_BOOST_CPU             125
+#define CLK_DOUT_CMU_CMU_BOOST_MIF             126
+#define CLK_DOUT_CMU_CPUCL0_NOCP               127
+#define CLK_DOUT_CMU_CSIS_DCPHY                        128
+#define CLK_DOUT_CMU_CSIS_NOC                  129
+#define CLK_DOUT_CMU_CSIS_OIS_MCU              130
+#define CLK_DOUT_CMU_CSTAT_NOC                 131
+#define CLK_DOUT_CMU_DPUB_DSIM                 132
+#define CLK_DOUT_CMU_LME_LME                   133
+#define CLK_DOUT_CMU_G3D_NOCP                  134
+#define CLK_DOUT_CMU_HSI0_DPGTC                        135
+#define CLK_DOUT_CMU_HSI0_DPOSC                        136
+#define CLK_DOUT_CMU_HSI0_NOC                  137
+#define CLK_DOUT_CMU_HSI0_USB32DRD             138
+#define CLK_DOUT_CMU_HSI1_NOC                  139
+#define CLK_DOUT_CMU_HSI1_PCIE                 140
+#define CLK_DOUT_CMU_UFS_UFS_EMBD              141
+#define CLK_DOUT_CMU_LME_NOC                   142
+#define CLK_DOUT_CMU_MFC0_MFC0                 143
+#define CLK_DOUT_CMU_MFC0_WFD                  144
+#define CLK_DOUT_CMU_MFC1_MFC1                 145
+#define CLK_DOUT_CMU_MIF_NOCP                  146
+#define CLK_DOUT_CMU_NOCL1B_NOC1               147
+#define CLK_DOUT_CMU_PERIC0_IP0                        148
+#define CLK_DOUT_CMU_PERIC0_IP1                        149
+#define CLK_DOUT_CMU_PERIC0_NOC                        150
+#define CLK_DOUT_CMU_PERIC1_IP0                        151
+#define CLK_DOUT_CMU_PERIC1_IP1                        152
+#define CLK_DOUT_CMU_PERIC1_NOC                        153
+#define CLK_DOUT_CMU_PERIC2_IP0                        154
+#define CLK_DOUT_CMU_PERIC2_IP1                        155
+#define CLK_DOUT_CMU_PERIC2_NOC                        156
+#define CLK_DOUT_CMU_PERIS_GIC                 157
+#define CLK_DOUT_CMU_PERIS_NOC                 158
+#define CLK_DOUT_CMU_SSP_NOC                   159
+#define CLK_DOUT_CMU_VTS_DMIC                  160
+#define CLK_DOUT_CMU_YUVP_NOC                  161
+#define CLK_DOUT_CMU_CP_SHARED1_CLK            162
+#define CLK_DOUT_CMU_DIV_AUD_AUDIF0            163
+#define CLK_DOUT_CMU_DIV_AUD_AUDIF0_SM         164
+#define CLK_DOUT_CMU_DIV_AUD_AUDIF1            165
+#define CLK_DOUT_CMU_DIV_AUD_AUDIF1_SM         166
+#define CLK_DOUT_CMU_DIV_AUD_CPU               167
+#define CLK_DOUT_CMU_DIV_AUD_CPU_SM            168
+#define CLK_DOUT_CMU_DIV_CIS_CLK0              169
+#define CLK_DOUT_CMU_DIV_CIS_CLK1              170
+#define CLK_DOUT_CMU_DIV_CIS_CLK2              171
+#define CLK_DOUT_CMU_DIV_CIS_CLK3              172
+#define CLK_DOUT_CMU_DIV_CIS_CLK4              173
+#define CLK_DOUT_CMU_DIV_CIS_CLK5              174
+#define CLK_DOUT_CMU_DIV_CIS_CLK6              175
+#define CLK_DOUT_CMU_DIV_CIS_CLK7              176
+#define CLK_DOUT_CMU_DIV_CPUCL0_DBG_NOC                177
+#define CLK_DOUT_CMU_DIV_CPUCL0_DBG_NOC_SM     178
+#define CLK_DOUT_CMU_DIV_CPUCL0_SWITCH         179
+#define CLK_DOUT_CMU_DIV_CPUCL0_SWITCH_SM      180
+#define CLK_DOUT_CMU_DIV_CPUCL1_SWITCH         181
+#define CLK_DOUT_CMU_DIV_CPUCL1_SWITCH_SM      182
+#define CLK_DOUT_CMU_DIV_CPUCL2_SWITCH         183
+#define CLK_DOUT_CMU_DIV_CPUCL2_SWITCH_SM      184
+#define CLK_DOUT_CMU_DIV_DNC_NOC               185
+#define CLK_DOUT_CMU_DIV_DNC_NOC_SM            186
+#define CLK_DOUT_CMU_DIV_DPUB                  187
+#define CLK_DOUT_CMU_DIV_DPUB_ALT              188
+#define CLK_DOUT_CMU_DIV_DPUF                  189
+#define CLK_DOUT_CMU_DIV_DPUF_ALT              190
+#define CLK_DOUT_CMU_DIV_DSP_NOC               191
+#define CLK_DOUT_CMU_DIV_DSP_NOC_SM            192
+#define CLK_DOUT_CMU_DIV_DSU_SWITCH            193
+#define CLK_DOUT_CMU_DIV_DSU_SWITCH_SM         194
+#define CLK_DOUT_CMU_DIV_G3D_SWITCH            195
+#define CLK_DOUT_CMU_DIV_G3D_SWITCH_SM         196
+#define CLK_DOUT_CMU_DIV_GNPU_NOC              197
+#define CLK_DOUT_CMU_DIV_GNPU_NOC_SM           198
+#define CLK_DOUT_CMU_DIV_UFS_MMC_CARD          199
+#define CLK_DOUT_CMU_DIV_UFS_MMC_CARD_SM       200
+#define CLK_DOUT_CMU_DIV_M2M_NOC               201
+#define CLK_DOUT_CMU_DIV_M2M_NOC_SM            202
+#define CLK_DOUT_CMU_DIV_NOCL0_NOC             203
+#define CLK_DOUT_CMU_DIV_NOCL0_NOC_SM          204
+#define CLK_DOUT_CMU_DIV_NOCL1A_NOC            205
+#define CLK_DOUT_CMU_DIV_NOCL1A_NOC_SM         206
+#define CLK_DOUT_CMU_DIV_NOCL1B_NOC0           207
+#define CLK_DOUT_CMU_DIV_NOCL1B_NOC0_SM                208
+#define CLK_DOUT_CMU_DIV_NOCL1C_NOC            209
+#define CLK_DOUT_CMU_DIV_NOCL1C_NOC_SM         210
+#define CLK_DOUT_CMU_DIV_SDMA_NOC              211
+#define CLK_DOUT_CMU_DIV_SDMA_NOC_SM           212
+#define CLK_DOUT_CMU_DIV_CP_HISPEEDY_CLK       213
+#define CLK_DOUT_CMU_DIV_CP_HISPEEDY_CLK_SM    214
+#define CLK_DOUT_CMU_DIV_CP_SHARED0_CLK                215
+#define CLK_DOUT_CMU_DIV_CP_SHARED0_CLK_SM     216
+#define CLK_DOUT_CMU_DIV_CP_SHARED2_CLK                217
+#define CLK_DOUT_CMU_DIV_CP_SHARED2_CLK_SM     218
+#define CLK_DOUT_CMU_UFS_NOC           219
+#define CLK_DOUT_CMU_DIV_M2M_FRC               220
+#define CLK_DOUT_CMU_DIV_M2M_FRC_SM            221
+#define CLK_DOUT_CMU_DIV_MCSC_MCSC             222
+#define CLK_DOUT_CMU_DIV_MCSC_MCSC_SM          223
+#define CLK_DOUT_CMU_DIV_MCSC_NOC              224
+#define CLK_DOUT_CMU_DIV_MCSC_NOC_SM           225
+#define CLK_DOUT_SHARED0_DIV1                  226
+#define CLK_DOUT_SHARED0_DIV2                  227
+#define CLK_DOUT_SHARED0_DIV4                  228
+#define CLK_DOUT_SHARED1_DIV1                  229
+#define CLK_DOUT_SHARED1_DIV2                  230
+#define CLK_DOUT_SHARED1_DIV4                  231
+#define CLK_DOUT_SHARED2_DIV1                  232
+#define CLK_DOUT_SHARED2_DIV2                  233
+#define CLK_DOUT_SHARED2_DIV4                  234
+#define CLK_DOUT_SHARED3_DIV1                  235
+#define CLK_DOUT_SHARED3_DIV2                  236
+#define CLK_DOUT_SHARED3_DIV4                  237
+#define CLK_DOUT_SHARED4_DIV1                  238
+#define CLK_DOUT_SHARED4_DIV2                  239
+#define CLK_DOUT_SHARED4_DIV4                  240
+#define CLK_DOUT_SHARED_MIF_DIV1               241
+#define CLK_DOUT_SHARED_MIF_DIV2               242
+#define CLK_DOUT_SHARED_MIF_DIV4               243
+#define CLK_DOUT_TCXO_DIV3                     244
+#define CLK_DOUT_TCXO_DIV4                     245
+
+/* CMU_ALIVE */
+#define CLK_MOUT_ALIVE_NOC_USER                        1
+#define CLK_MOUT_ALIVE_RCO_SPMI_USER           2
+#define CLK_MOUT_RCO_ALIVE_USER                        3
+#define CLK_MOUT_ALIVE_CHUB_PERI               4
+#define CLK_MOUT_ALIVE_CMGP_NOC                        5
+#define CLK_MOUT_ALIVE_CMGP_PERI               6
+#define CLK_MOUT_ALIVE_DBGCORE_NOC             7
+#define CLK_MOUT_ALIVE_DNC_NOC                 8
+#define CLK_MOUT_ALIVE_CHUBVTS_NOC             9
+#define CLK_MOUT_ALIVE_GNPU_NOC                        10
+#define CLK_MOUT_ALIVE_GNSS_NOC                        11
+#define CLK_MOUT_ALIVE_SDMA_NOC                        12
+#define CLK_MOUT_ALIVE_UFD_NOC                 13
+#define CLK_MOUT_ALIVE_DBGCORE_UART            14
+#define CLK_MOUT_ALIVE_NOC                     15
+#define CLK_MOUT_ALIVE_PMU_SUB                 16
+#define CLK_MOUT_ALIVE_SPMI                    17
+#define CLK_MOUT_ALIVE_TIMER                   18
+#define CLK_MOUT_ALIVE_CSIS_NOC                        19
+#define CLK_MOUT_ALIVE_DSP_NOC                 20
+
+#define CLK_DOUT_ALIVE_CHUB_PERI               21
+#define CLK_DOUT_ALIVE_CMGP_NOC                        22
+#define CLK_DOUT_ALIVE_CMGP_PERI               23
+#define CLK_DOUT_ALIVE_DBGCORE_NOC             24
+#define CLK_DOUT_ALIVE_DNC_NOC                 25
+#define CLK_DOUT_ALIVE_CHUBVTS_NOC             26
+#define CLK_DOUT_ALIVE_GNPU_NOC                        27
+#define CLK_DOUT_ALIVE_SDMA_NOC                        28
+#define CLK_DOUT_ALIVE_UFD_NOC                 29
+#define CLK_DOUT_ALIVE_DBGCORE_UART            30
+#define CLK_DOUT_ALIVE_NOC                     31
+#define CLK_DOUT_ALIVE_PMU_SUB                 32
+#define CLK_DOUT_ALIVE_SPMI                    33
+#define CLK_DOUT_ALIVE_CSIS_NOC                        34
+#define CLK_DOUT_ALIVE_DSP_NOC                 35
+
+/* CMU_PERIS */
+#define CLK_MOUT_PERIS_GIC_USER                        1
+#define CLK_MOUT_PERIS_NOC_USER                        2
+#define CLK_MOUT_PERIS_GIC                     3
+
+#define CLK_DOUT_PERIS_OTP                     4
+#define CLK_DOUT_PERIS_DDD_CTRL                        5
+
+/* CMU_CMGP */
+#define CLK_MOUT_CMGP_CLKALIVE_NOC_USER                1
+#define CLK_MOUT_CMGP_CLKALIVE_PERI_USER       2
+#define CLK_MOUT_CMGP_I2C                      3
+#define CLK_MOUT_CMGP_SPI_I2C0                 4
+#define CLK_MOUT_CMGP_SPI_I2C1                 5
+#define CLK_MOUT_CMGP_SPI_MS_CTRL              6
+#define CLK_MOUT_CMGP_USI0                     7
+#define CLK_MOUT_CMGP_USI1                     8
+#define CLK_MOUT_CMGP_USI2                     9
+#define CLK_MOUT_CMGP_USI3                     10
+#define CLK_MOUT_CMGP_USI4                     11
+#define CLK_MOUT_CMGP_USI5                     12
+#define CLK_MOUT_CMGP_USI6                     13
+
+#define CLK_DOUT_CMGP_I2C                      14
+#define CLK_DOUT_CMGP_SPI_I2C0                 15
+#define CLK_DOUT_CMGP_SPI_I2C1                 16
+#define CLK_DOUT_CMGP_SPI_MS_CTRL              17
+#define CLK_DOUT_CMGP_USI0                     18
+#define CLK_DOUT_CMGP_USI1                     19
+#define CLK_DOUT_CMGP_USI2                     20
+#define CLK_DOUT_CMGP_USI3                     21
+#define CLK_DOUT_CMGP_USI4                     22
+#define CLK_DOUT_CMGP_USI5                     23
+#define CLK_DOUT_CMGP_USI6                     24
+
+/* CMU_HSI0 */
+#define CLK_MOUT_CLKCMU_HSI0_DPGTC_USER                1
+#define CLK_MOUT_CLKCMU_HSI0_DPOSC_USER                2
+#define CLK_MOUT_CLKCMU_HSI0_NOC_USER          3
+#define CLK_MOUT_CLKCMU_HSI0_USB32DRD_USER     4
+#define CLK_MOUT_HSI0_NOC                      5
+#define CLK_MOUT_HSI0_RTCCLK                   6
+#define CLK_MOUT_HSI0_USB32DRD                 7
+
+#define CLK_DOUT_DIV_CLK_HSI0_EUSB             8
+
+/* CMU_PERIC0 */
+#define CLK_MOUT_PERIC0_IP0_USER               1
+#define CLK_MOUT_PERIC0_IP1_USER               2
+#define CLK_MOUT_PERIC0_NOC_USER               3
+#define CLK_MOUT_PERIC0_I2C                    4
+#define CLK_MOUT_PERIC0_USI04                  5
+
+#define CLK_DOUT_PERIC0_I2C                    6
+#define CLK_DOUT_PERIC0_USI04                  7
+
+/* CMU_PERIC1 */
+#define CLK_MOUT_PERIC1_IP0_USER               1
+#define CLK_MOUT_PERIC1_IP1_USER               2
+#define CLK_MOUT_PERIC1_NOC_USER               3
+#define CLK_MOUT_PERIC1_I2C                    4
+#define CLK_MOUT_PERIC1_SPI_MS_CTRL            5
+#define CLK_MOUT_PERIC1_UART_BT                        6
+#define CLK_MOUT_PERIC1_USI07                  7
+#define CLK_MOUT_PERIC1_USI07_SPI_I2C          8
+#define CLK_MOUT_PERIC1_USI08                  9
+#define CLK_MOUT_PERIC1_USI08_SPI_I2C          10
+#define CLK_MOUT_PERIC1_USI09                  11
+#define CLK_MOUT_PERIC1_USI10                  12
+
+#define CLK_DOUT_PERIC1_I2C                    13
+#define CLK_DOUT_PERIC1_SPI_MS_CTRL            14
+#define CLK_DOUT_PERIC1_UART_BT                        15
+#define CLK_DOUT_PERIC1_USI07                  16
+#define CLK_DOUT_PERIC1_USI07_SPI_I2C          17
+#define CLK_DOUT_PERIC1_USI08                  18
+#define CLK_DOUT_PERIC1_USI08_SPI_I2C          19
+#define CLK_DOUT_PERIC1_USI09                  20
+#define CLK_DOUT_PERIC1_USI10                  21
+
+/* CMU_PERIC2 */
+#define CLK_MOUT_PERIC2_IP0_USER               1
+#define CLK_MOUT_PERIC2_IP1_USER               2
+#define CLK_MOUT_PERIC2_NOC_USER               3
+#define CLK_MOUT_PERIC2_I2C                    4
+#define CLK_MOUT_PERIC2_SPI_MS_CTRL            5
+#define CLK_MOUT_PERIC2_UART_DBG               6
+#define CLK_MOUT_PERIC2_USI00                  7
+#define CLK_MOUT_PERIC2_USI00_SPI_I2C          8
+#define CLK_MOUT_PERIC2_USI01                  9
+#define CLK_MOUT_PERIC2_USI01_SPI_I2C          10
+#define CLK_MOUT_PERIC2_USI02                  11
+#define CLK_MOUT_PERIC2_USI03                  12
+#define CLK_MOUT_PERIC2_USI05                  13
+#define CLK_MOUT_PERIC2_USI06                  14
+#define CLK_MOUT_PERIC2_USI11                  15
+
+#define CLK_DOUT_PERIC2_I2C                    16
+#define CLK_DOUT_PERIC2_SPI_MS_CTRL            17
+#define CLK_DOUT_PERIC2_UART_DBG               18
+#define CLK_DOUT_PERIC2_USI00                  19
+#define CLK_DOUT_PERIC2_USI00_SPI_I2C          20
+#define CLK_DOUT_PERIC2_USI01                  21
+#define CLK_DOUT_PERIC2_USI01_SPI_I2C          22
+#define CLK_DOUT_PERIC2_USI02                  23
+#define CLK_DOUT_PERIC2_USI03                  24
+#define CLK_DOUT_PERIC2_USI05                  25
+#define CLK_DOUT_PERIC2_USI06                  26
+#define CLK_DOUT_PERIC2_USI11                  27
+
+/* CMU_UFS */
+#define CLK_MOUT_UFS_MMC_CARD_USER             1
+#define CLK_MOUT_UFS_NOC_USER                  2
+#define CLK_MOUT_UFS_UFS_EMBD_USER             3
+
+/* CMU_VTS */
+#define CLK_MOUT_CLKALIVE_VTS_NOC_USER         1
+#define CLK_MOUT_CLKALIVE_VTS_RCO_USER         2
+#define CLK_MOUT_CLKCMU_VTS_DMIC_USER          3
+#define CLK_MOUT_CLKVTS_AUD_DMIC1              4
+#define CLK_MOUT_CLKVTS_NOC                    5
+#define CLK_MOUT_CLKVTS_DMIC_PAD               6
+
+#define CLK_DOUT_CLKVTS_AUD_DMIC0              7
+#define CLK_DOUT_CLKVTS_AUD_DMIC1              8
+#define CLK_DOUT_CLKVTS_CPU                    9
+#define CLK_DOUT_CLKVTS_DMIC_IF                        10
+#define CLK_DOUT_CLKVTS_DMIC_IF_DIV2           11
+#define CLK_DOUT_CLKVTS_NOC                    12
+#define CLK_DOUT_CLKVTS_SERIAL_LIF             13
+#define CLK_DOUT_CLKVTS_SERIAL_LIF_CORE                14
+
+#endif
diff --git a/include/dt-bindings/clock/samsung,exynos7870-cmu.h b/include/dt-bindings/clock/samsung,exynos7870-cmu.h
new file mode 100644 (file)
index 0000000..57d04bb
--- /dev/null
@@ -0,0 +1,324 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (C) 2015 Samsung Electronics Co., Ltd.
+ * Author: Kaustabh Chakraborty <kauschluss@disroot.org>
+ *
+ * Device Tree binding constants for Exynos7870 clock controller.
+ */
+
+#ifndef _DT_BINDINGS_CLOCK_EXYNOS7870_H
+#define _DT_BINDINGS_CLOCK_EXYNOS7870_H
+
+/* CMU_MIF */
+#define CLK_DOUT_MIF_APB                               1
+#define CLK_DOUT_MIF_BUSD                              2
+#define CLK_DOUT_MIF_CMU_DISPAUD_BUS                   3
+#define CLK_DOUT_MIF_CMU_DISPAUD_DECON_ECLK            4
+#define CLK_DOUT_MIF_CMU_DISPAUD_DECON_VCLK            5
+#define CLK_DOUT_MIF_CMU_FSYS_BUS                      6
+#define CLK_DOUT_MIF_CMU_FSYS_MMC0                     7
+#define CLK_DOUT_MIF_CMU_FSYS_MMC1                     8
+#define CLK_DOUT_MIF_CMU_FSYS_MMC2                     9
+#define CLK_DOUT_MIF_CMU_FSYS_USB20DRD_REFCLK          10
+#define CLK_DOUT_MIF_CMU_G3D_SWITCH                    11
+#define CLK_DOUT_MIF_CMU_ISP_CAM                       12
+#define CLK_DOUT_MIF_CMU_ISP_ISP                       13
+#define CLK_DOUT_MIF_CMU_ISP_SENSOR0                   14
+#define CLK_DOUT_MIF_CMU_ISP_SENSOR1                   15
+#define CLK_DOUT_MIF_CMU_ISP_SENSOR2                   16
+#define CLK_DOUT_MIF_CMU_ISP_VRA                       17
+#define CLK_DOUT_MIF_CMU_MFCMSCL_MFC                   18
+#define CLK_DOUT_MIF_CMU_MFCMSCL_MSCL                  19
+#define CLK_DOUT_MIF_CMU_PERI_BUS                      20
+#define CLK_DOUT_MIF_CMU_PERI_SPI0                     21
+#define CLK_DOUT_MIF_CMU_PERI_SPI1                     22
+#define CLK_DOUT_MIF_CMU_PERI_SPI2                     23
+#define CLK_DOUT_MIF_CMU_PERI_SPI3                     24
+#define CLK_DOUT_MIF_CMU_PERI_SPI4                     25
+#define CLK_DOUT_MIF_CMU_PERI_UART0                    26
+#define CLK_DOUT_MIF_CMU_PERI_UART1                    27
+#define CLK_DOUT_MIF_CMU_PERI_UART2                    28
+#define CLK_DOUT_MIF_HSI2C                             29
+#define CLK_FOUT_MIF_BUS_PLL                           30
+#define CLK_FOUT_MIF_MEDIA_PLL                         31
+#define CLK_FOUT_MIF_MEM_PLL                           32
+#define CLK_GOUT_MIF_CMU_DISPAUD_BUS                   33
+#define CLK_GOUT_MIF_CMU_DISPAUD_DECON_ECLK            34
+#define CLK_GOUT_MIF_CMU_DISPAUD_DECON_VCLK            35
+#define CLK_GOUT_MIF_CMU_FSYS_BUS                      36
+#define CLK_GOUT_MIF_CMU_FSYS_MMC0                     37
+#define CLK_GOUT_MIF_CMU_FSYS_MMC1                     38
+#define CLK_GOUT_MIF_CMU_FSYS_MMC2                     39
+#define CLK_GOUT_MIF_CMU_FSYS_USB20DRD_REFCLK          40
+#define CLK_GOUT_MIF_CMU_G3D_SWITCH                    41
+#define CLK_GOUT_MIF_CMU_ISP_CAM                       42
+#define CLK_GOUT_MIF_CMU_ISP_ISP                       43
+#define CLK_GOUT_MIF_CMU_ISP_SENSOR0                   44
+#define CLK_GOUT_MIF_CMU_ISP_SENSOR1                   45
+#define CLK_GOUT_MIF_CMU_ISP_SENSOR2                   46
+#define CLK_GOUT_MIF_CMU_ISP_VRA                       47
+#define CLK_GOUT_MIF_CMU_MFCMSCL_MFC                   48
+#define CLK_GOUT_MIF_CMU_MFCMSCL_MSCL                  49
+#define CLK_GOUT_MIF_CMU_PERI_BUS                      50
+#define CLK_GOUT_MIF_CMU_PERI_SPI0                     51
+#define CLK_GOUT_MIF_CMU_PERI_SPI1                     52
+#define CLK_GOUT_MIF_CMU_PERI_SPI2                     53
+#define CLK_GOUT_MIF_CMU_PERI_SPI3                     54
+#define CLK_GOUT_MIF_CMU_PERI_SPI4                     55
+#define CLK_GOUT_MIF_CMU_PERI_UART0                    56
+#define CLK_GOUT_MIF_CMU_PERI_UART1                    57
+#define CLK_GOUT_MIF_CMU_PERI_UART2                    58
+#define CLK_GOUT_MIF_CP_PCLK_HSI2C                     59
+#define CLK_GOUT_MIF_CP_PCLK_HSI2C_BAT_0               60
+#define CLK_GOUT_MIF_CP_PCLK_HSI2C_BAT_1               61
+#define CLK_GOUT_MIF_HSI2C_AP_PCLKM                    62
+#define CLK_GOUT_MIF_HSI2C_AP_PCLKS                    63
+#define CLK_GOUT_MIF_HSI2C_CP_PCLKM                    64
+#define CLK_GOUT_MIF_HSI2C_CP_PCLKS                    65
+#define CLK_GOUT_MIF_HSI2C_IPCLK                       66
+#define CLK_GOUT_MIF_HSI2C_ITCLK                       67
+#define CLK_GOUT_MIF_MUX_BUSD                          68
+#define CLK_GOUT_MIF_MUX_BUS_PLL                       69
+#define CLK_GOUT_MIF_MUX_BUS_PLL_CON                   70
+#define CLK_GOUT_MIF_MUX_CMU_DISPAUD_BUS               71
+#define CLK_GOUT_MIF_MUX_CMU_DISPAUD_DECON_ECLK                72
+#define CLK_GOUT_MIF_MUX_CMU_DISPAUD_DECON_VCLK                73
+#define CLK_GOUT_MIF_MUX_CMU_FSYS_BUS                  74
+#define CLK_GOUT_MIF_MUX_CMU_FSYS_MMC0                 75
+#define CLK_GOUT_MIF_MUX_CMU_FSYS_MMC1                 76
+#define CLK_GOUT_MIF_MUX_CMU_FSYS_MMC2                 77
+#define CLK_GOUT_MIF_MUX_CMU_FSYS_USB20DRD_REFCLK      78
+#define CLK_GOUT_MIF_MUX_CMU_ISP_CAM                   79
+#define CLK_GOUT_MIF_MUX_CMU_ISP_ISP                   80
+#define CLK_GOUT_MIF_MUX_CMU_ISP_SENSOR0               81
+#define CLK_GOUT_MIF_MUX_CMU_ISP_SENSOR1               82
+#define CLK_GOUT_MIF_MUX_CMU_ISP_SENSOR2               83
+#define CLK_GOUT_MIF_MUX_CMU_ISP_VRA                   84
+#define CLK_GOUT_MIF_MUX_CMU_MFCMSCL_MFC               85
+#define CLK_GOUT_MIF_MUX_CMU_MFCMSCL_MSCL              86
+#define CLK_GOUT_MIF_MUX_CMU_PERI_BUS                  87
+#define CLK_GOUT_MIF_MUX_CMU_PERI_SPI0                 88
+#define CLK_GOUT_MIF_MUX_CMU_PERI_SPI1                 89
+#define CLK_GOUT_MIF_MUX_CMU_PERI_SPI2                 90
+#define CLK_GOUT_MIF_MUX_CMU_PERI_SPI3                 91
+#define CLK_GOUT_MIF_MUX_CMU_PERI_SPI4                 92
+#define CLK_GOUT_MIF_MUX_CMU_PERI_UART0                        93
+#define CLK_GOUT_MIF_MUX_CMU_PERI_UART1                        94
+#define CLK_GOUT_MIF_MUX_CMU_PERI_UART2                        95
+#define CLK_GOUT_MIF_MUX_MEDIA_PLL                     96
+#define CLK_GOUT_MIF_MUX_MEDIA_PLL_CON                 97
+#define CLK_GOUT_MIF_MUX_MEM_PLL                       98
+#define CLK_GOUT_MIF_MUX_MEM_PLL_CON                   99
+#define CLK_GOUT_MIF_WRAP_ADC_IF_OSC_SYS               100
+#define CLK_GOUT_MIF_WRAP_ADC_IF_PCLK_S0               101
+#define CLK_GOUT_MIF_WRAP_ADC_IF_PCLK_S1               102
+#define CLK_MOUT_MIF_BUSD                              103
+#define CLK_MOUT_MIF_CMU_DISPAUD_BUS                   104
+#define CLK_MOUT_MIF_CMU_DISPAUD_DECON_ECLK            105
+#define CLK_MOUT_MIF_CMU_DISPAUD_DECON_VCLK            106
+#define CLK_MOUT_MIF_CMU_FSYS_BUS                      107
+#define CLK_MOUT_MIF_CMU_FSYS_MMC0                     108
+#define CLK_MOUT_MIF_CMU_FSYS_MMC1                     109
+#define CLK_MOUT_MIF_CMU_FSYS_MMC2                     110
+#define CLK_MOUT_MIF_CMU_FSYS_USB20DRD_REFCLK          111
+#define CLK_MOUT_MIF_CMU_ISP_CAM                       112
+#define CLK_MOUT_MIF_CMU_ISP_ISP                       113
+#define CLK_MOUT_MIF_CMU_ISP_SENSOR0                   114
+#define CLK_MOUT_MIF_CMU_ISP_SENSOR1                   115
+#define CLK_MOUT_MIF_CMU_ISP_SENSOR2                   116
+#define CLK_MOUT_MIF_CMU_ISP_VRA                       117
+#define CLK_MOUT_MIF_CMU_MFCMSCL_MFC                   118
+#define CLK_MOUT_MIF_CMU_MFCMSCL_MSCL                  119
+#define CLK_MOUT_MIF_CMU_PERI_BUS                      120
+#define CLK_MOUT_MIF_CMU_PERI_SPI0                     121
+#define CLK_MOUT_MIF_CMU_PERI_SPI1                     122
+#define CLK_MOUT_MIF_CMU_PERI_SPI2                     123
+#define CLK_MOUT_MIF_CMU_PERI_SPI3                     124
+#define CLK_MOUT_MIF_CMU_PERI_SPI4                     125
+#define CLK_MOUT_MIF_CMU_PERI_UART0                    126
+#define CLK_MOUT_MIF_CMU_PERI_UART1                    127
+#define CLK_MOUT_MIF_CMU_PERI_UART2                    128
+#define MIF_NR_CLK                                     129
+
+/* CMU_DISPAUD */
+#define CLK_DOUT_DISPAUD_APB                                   1
+#define CLK_DOUT_DISPAUD_DECON_ECLK                            2
+#define CLK_DOUT_DISPAUD_DECON_VCLK                            3
+#define CLK_DOUT_DISPAUD_MI2S                                  4
+#define CLK_DOUT_DISPAUD_MIXER                                 5
+#define CLK_FOUT_DISPAUD_AUD_PLL                               6
+#define CLK_FOUT_DISPAUD_PLL                                   7
+#define CLK_GOUT_DISPAUD_APB_AUD                               8
+#define CLK_GOUT_DISPAUD_APB_AUD_AMP                           9
+#define CLK_GOUT_DISPAUD_APB_DISP                              10
+#define CLK_GOUT_DISPAUD_BUS                                   11
+#define CLK_GOUT_DISPAUD_BUS_DISP                              12
+#define CLK_GOUT_DISPAUD_BUS_PPMU                              13
+#define CLK_GOUT_DISPAUD_CON_AUD_I2S_BCLK_BT_IN                        14
+#define CLK_GOUT_DISPAUD_CON_AUD_I2S_BCLK_FM_IN                        15
+#define CLK_GOUT_DISPAUD_CON_CP2AUD_BCK                                16
+#define CLK_GOUT_DISPAUD_CON_EXT2AUD_BCK_GPIO_I2S              17
+#define CLK_GOUT_DISPAUD_DECON_ECLK                            18
+#define CLK_GOUT_DISPAUD_DECON_VCLK                            19
+#define CLK_GOUT_DISPAUD_MI2S_AMP_I2SCODCLKI                   20
+#define CLK_GOUT_DISPAUD_MI2S_AUD_I2SCODCLKI                   21
+#define CLK_GOUT_DISPAUD_MIXER_AUD_SYSCLK                      22
+#define CLK_GOUT_DISPAUD_MUX_AUD_PLL                           23
+#define CLK_GOUT_DISPAUD_MUX_AUD_PLL_CON                       24
+#define CLK_GOUT_DISPAUD_MUX_BUS_USER                          25
+#define CLK_GOUT_DISPAUD_MUX_DECON_ECLK                                26
+#define CLK_GOUT_DISPAUD_MUX_DECON_ECLK_USER                   27
+#define CLK_GOUT_DISPAUD_MUX_DECON_VCLK                                28
+#define CLK_GOUT_DISPAUD_MUX_DECON_VCLK_USER                   29
+#define CLK_GOUT_DISPAUD_MUX_MI2S                              30
+#define CLK_GOUT_DISPAUD_MUX_MIPIPHY_RXCLKESC0_USER            31
+#define CLK_GOUT_DISPAUD_MUX_MIPIPHY_RXCLKESC0_USER_CON                32
+#define CLK_GOUT_DISPAUD_MUX_MIPIPHY_TXBYTECLKHS_USER          33
+#define CLK_GOUT_DISPAUD_MUX_MIPIPHY_TXBYTECLKHS_USER_CON      34
+#define CLK_GOUT_DISPAUD_MUX_PLL                               35
+#define CLK_GOUT_DISPAUD_MUX_PLL_CON                           36
+#define CLK_MOUT_DISPAUD_BUS_USER                              37
+#define CLK_MOUT_DISPAUD_DECON_ECLK                            38
+#define CLK_MOUT_DISPAUD_DECON_ECLK_USER                       39
+#define CLK_MOUT_DISPAUD_DECON_VCLK                            40
+#define CLK_MOUT_DISPAUD_DECON_VCLK_USER                       41
+#define CLK_MOUT_DISPAUD_MI2S                                  42
+#define DISPAUD_NR_CLK                                         43
+
+/* CMU_FSYS */
+#define CLK_FOUT_FSYS_USB_PLL                          1
+#define CLK_GOUT_FSYS_BUSP3_HCLK                       2
+#define CLK_GOUT_FSYS_MMC0_ACLK                                3
+#define CLK_GOUT_FSYS_MMC1_ACLK                                4
+#define CLK_GOUT_FSYS_MMC2_ACLK                                5
+#define CLK_GOUT_FSYS_MUX_USB20DRD_PHYCLOCK_USER       6
+#define CLK_GOUT_FSYS_MUX_USB20DRD_PHYCLOCK_USER_CON   7
+#define CLK_GOUT_FSYS_MUX_USB_PLL                      8
+#define CLK_GOUT_FSYS_MUX_USB_PLL_CON                  9
+#define CLK_GOUT_FSYS_PDMA0_ACLK_PDMA0                 10
+#define CLK_GOUT_FSYS_PPMU_ACLK                                11
+#define CLK_GOUT_FSYS_PPMU_PCLK                                12
+#define CLK_GOUT_FSYS_SROMC_HCLK                       13
+#define CLK_GOUT_FSYS_UPSIZER_BUS1_ACLK                        14
+#define CLK_GOUT_FSYS_USB20DRD_ACLK_HSDRD              15
+#define CLK_GOUT_FSYS_USB20DRD_HCLK_USB20_CTRL         16
+#define CLK_GOUT_FSYS_USB20DRD_HSDRD_REF_CLK           17
+#define FSYS_NR_CLK                                    18
+
+/* CMU_G3D */
+#define CLK_DOUT_G3D_APB               1
+#define CLK_DOUT_G3D_BUS               2
+#define CLK_FOUT_G3D_PLL               3
+#define CLK_GOUT_G3D_ASYNCS_D0_CLK     4
+#define CLK_GOUT_G3D_ASYNC_PCLKM       5
+#define CLK_GOUT_G3D_CLK               6
+#define CLK_GOUT_G3D_MUX               7
+#define CLK_GOUT_G3D_MUX_PLL           8
+#define CLK_GOUT_G3D_MUX_PLL_CON       9
+#define CLK_GOUT_G3D_MUX_SWITCH_USER   10
+#define CLK_GOUT_G3D_PPMU_ACLK         11
+#define CLK_GOUT_G3D_PPMU_PCLK         12
+#define CLK_GOUT_G3D_QE_ACLK           13
+#define CLK_GOUT_G3D_QE_PCLK           14
+#define CLK_GOUT_G3D_SYSREG_PCLK       15
+#define CLK_MOUT_G3D                   16
+#define CLK_MOUT_G3D_SWITCH_USER       17
+#define G3D_NR_CLK                     18
+
+/* CMU_ISP */
+#define CLK_DOUT_ISP_APB                               1
+#define CLK_DOUT_ISP_CAM_HALF                          2
+#define CLK_FOUT_ISP_PLL                               3
+#define CLK_GOUT_ISP_CAM                               4
+#define CLK_GOUT_ISP_CAM_HALF                          5
+#define CLK_GOUT_ISP_ISPD                              6
+#define CLK_GOUT_ISP_ISPD_PPMU                         7
+#define CLK_GOUT_ISP_MUX_CAM                           8
+#define CLK_GOUT_ISP_MUX_CAM_USER                      9
+#define CLK_GOUT_ISP_MUX_ISP                           10
+#define CLK_GOUT_ISP_MUX_ISPD                          11
+#define CLK_GOUT_ISP_MUX_PLL                           12
+#define CLK_GOUT_ISP_MUX_PLL_CON                       13
+#define CLK_GOUT_ISP_MUX_RXBYTECLKHS0_SENSOR0_USER     14
+#define CLK_GOUT_ISP_MUX_RXBYTECLKHS0_SENSOR0_USER_CON 15
+#define CLK_GOUT_ISP_MUX_RXBYTECLKHS0_SENSOR1_USER     16
+#define CLK_GOUT_ISP_MUX_RXBYTECLKHS0_SENSOR1_USER_CON 17
+#define CLK_GOUT_ISP_MUX_USER                          18
+#define CLK_GOUT_ISP_MUX_VRA                           19
+#define CLK_GOUT_ISP_MUX_VRA_USER                      20
+#define CLK_GOUT_ISP_VRA                               21
+#define CLK_MOUT_ISP_CAM                               22
+#define CLK_MOUT_ISP_CAM_USER                          23
+#define CLK_MOUT_ISP_ISP                               24
+#define CLK_MOUT_ISP_ISPD                              25
+#define CLK_MOUT_ISP_USER                              26
+#define CLK_MOUT_ISP_VRA                               27
+#define CLK_MOUT_ISP_VRA_USER                          28
+#define ISP_NR_CLK                                     29
+
+/* CMU_MFCMSCL */
+#define CLK_DOUT_MFCMSCL_APB           1
+#define CLK_GOUT_MFCMSCL_MFC           2
+#define CLK_GOUT_MFCMSCL_MSCL          3
+#define CLK_GOUT_MFCMSCL_MSCL_BI       4
+#define CLK_GOUT_MFCMSCL_MSCL_D                5
+#define CLK_GOUT_MFCMSCL_MSCL_JPEG     6
+#define CLK_GOUT_MFCMSCL_MSCL_POLY     7
+#define CLK_GOUT_MFCMSCL_MSCL_PPMU     8
+#define CLK_GOUT_MFCMSCL_MUX_MFC_USER  9
+#define CLK_GOUT_MFCMSCL_MUX_MSCL_USER 10
+#define CLK_MOUT_MFCMSCL_MFC_USER      11
+#define CLK_MOUT_MFCMSCL_MSCL_USER     12
+#define MFCMSCL_NR_CLK                 13
+
+/* CMU_PERI */
+#define CLK_GOUT_PERI_BUSP1_PERIC0_HCLK                1
+#define CLK_GOUT_PERI_GPIO2_PCLK               2
+#define CLK_GOUT_PERI_GPIO5_PCLK               3
+#define CLK_GOUT_PERI_GPIO6_PCLK               4
+#define CLK_GOUT_PERI_GPIO7_PCLK               5
+#define CLK_GOUT_PERI_HSI2C1_IPCLK             6
+#define CLK_GOUT_PERI_HSI2C2_IPCLK             7
+#define CLK_GOUT_PERI_HSI2C3_IPCLK             8
+#define CLK_GOUT_PERI_HSI2C4_IPCLK             9
+#define CLK_GOUT_PERI_HSI2C5_IPCLK             10
+#define CLK_GOUT_PERI_HSI2C6_IPCLK             11
+#define CLK_GOUT_PERI_I2C0_PCLK                        12
+#define CLK_GOUT_PERI_I2C1_PCLK                        13
+#define CLK_GOUT_PERI_I2C2_PCLK                        14
+#define CLK_GOUT_PERI_I2C3_PCLK                        15
+#define CLK_GOUT_PERI_I2C4_PCLK                        16
+#define CLK_GOUT_PERI_I2C5_PCLK                        17
+#define CLK_GOUT_PERI_I2C6_PCLK                        18
+#define CLK_GOUT_PERI_I2C7_PCLK                        19
+#define CLK_GOUT_PERI_I2C8_PCLK                        20
+#define CLK_GOUT_PERI_MCT_PCLK                 21
+#define CLK_GOUT_PERI_PWM_MOTOR_OSCCLK         22
+#define CLK_GOUT_PERI_PWM_MOTOR_PCLK_S0                23
+#define CLK_GOUT_PERI_SFRIF_TMU_CPUCL0_PCLK    24
+#define CLK_GOUT_PERI_SFRIF_TMU_CPUCL1_PCLK    25
+#define CLK_GOUT_PERI_SFRIF_TMU_PCLK           26
+#define CLK_GOUT_PERI_SPI0_PCLK                        27
+#define CLK_GOUT_PERI_SPI0_SPI_EXT_CLK         28
+#define CLK_GOUT_PERI_SPI1_PCLK                        29
+#define CLK_GOUT_PERI_SPI1_SPI_EXT_CLK         30
+#define CLK_GOUT_PERI_SPI2_PCLK                        31
+#define CLK_GOUT_PERI_SPI2_SPI_EXT_CLK         32
+#define CLK_GOUT_PERI_SPI3_PCLK                        33
+#define CLK_GOUT_PERI_SPI3_SPI_EXT_CLK         34
+#define CLK_GOUT_PERI_SPI4_PCLK                        35
+#define CLK_GOUT_PERI_SPI4_SPI_EXT_CLK         36
+#define CLK_GOUT_PERI_TMU_CLK                  37
+#define CLK_GOUT_PERI_TMU_CPUCL0_CLK           38
+#define CLK_GOUT_PERI_TMU_CPUCL1_CLK           39
+#define CLK_GOUT_PERI_UART0_EXT_UCLK           40
+#define CLK_GOUT_PERI_UART0_PCLK               41
+#define CLK_GOUT_PERI_UART1_EXT_UCLK           42
+#define CLK_GOUT_PERI_UART1_PCLK               43
+#define CLK_GOUT_PERI_UART2_EXT_UCLK           44
+#define CLK_GOUT_PERI_UART2_PCLK               45
+#define CLK_GOUT_PERI_WDT_CPUCL0_PCLK          46
+#define CLK_GOUT_PERI_WDT_CPUCL1_PCLK          47
+#define PERI_NR_CLK                            48
+
+#endif /* _DT_BINDINGS_CLOCK_EXYNOS7870_H */
index 307215a..6b9df09 100644 (file)
 #define CLK_GOUT_HSI0_CMU_HSI0_PCLK                    21
 #define CLK_GOUT_HSI0_XIU_D_HSI0_ACLK                  22
 
+/* CMU_PERIS */
+#define CLK_MOUT_PERIS_BUS_USER                        1
+#define CLK_MOUT_PERIS_CLK_PERIS_GIC           2
+#define CLK_GOUT_PERIS_SYSREG_PERIS_PCLK       3
+#define CLK_GOUT_PERIS_WDT_CLUSTER2_PCLK       4
+#define CLK_GOUT_PERIS_WDT_CLUSTER0_PCLK       5
+#define CLK_CLK_PERIS_PERIS_CMU_PERIS_PCLK     6
+#define CLK_GOUT_PERIS_CLK_PERIS_BUSP_CLK      7
+#define CLK_GOUT_PERIS_CLK_PERIS_OSCCLK_CLK    8
+#define CLK_GOUT_PERIS_CLK_PERIS_GIC_CLK       9
+#define CLK_GOUT_PERIS_AD_AXI_P_PERIS_ACLKM    10
+#define CLK_GOUT_PERIS_OTP_CON_BIRA_PCLK       11
+#define CLK_GOUT_PERIS_GIC_CLK                 12
+#define CLK_GOUT_PERIS_LHM_AXI_P_PERIS_CLK     13
+#define CLK_GOUT_PERIS_MCT_PCLK                        14
+#define CLK_GOUT_PERIS_OTP_CON_TOP_PCLK                15
+#define CLK_GOUT_PERIS_D_TZPC_PERIS_PCLK       16
+#define CLK_GOUT_PERIS_TMU_TOP_PCLK            17
+#define CLK_GOUT_PERIS_OTP_CON_BIRA_OSCCLK     18
+#define CLK_GOUT_PERIS_OTP_CON_TOP_OSCCLK      19
+
 #endif
index ebb146a..6889405 100644 (file)
 #define CLK_BUS_HDCP           127
 #define CLK_PLL_SYSTEM_32K     128
 #define CLK_BUS_GPADC          129
+#define CLK_TCON_LCD0          130
+#define CLK_BUS_TCON_LCD0      131
+#define CLK_TCON_LCD1          132
+#define CLK_BUS_TCON_LCD1      133
 
 #endif /* _DT_BINDINGS_CLK_SUN50I_H616_H_ */
diff --git a/include/dt-bindings/clock/sun55i-a523-ccu.h b/include/dt-bindings/clock/sun55i-a523-ccu.h
new file mode 100644 (file)
index 0000000..c8259ac
--- /dev/null
@@ -0,0 +1,189 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/*
+ * Copyright (C) 2024 Arm Ltd.
+ */
+
+#ifndef _DT_BINDINGS_CLK_SUN55I_A523_CCU_H_
+#define _DT_BINDINGS_CLK_SUN55I_A523_CCU_H_
+
+#define CLK_PLL_DDR0           0
+#define CLK_PLL_PERIPH0_4X     1
+#define CLK_PLL_PERIPH0_2X     2
+#define CLK_PLL_PERIPH0_800M   3
+#define CLK_PLL_PERIPH0_480M   4
+#define CLK_PLL_PERIPH0_600M   5
+#define CLK_PLL_PERIPH0_400M   6
+#define CLK_PLL_PERIPH0_300M   7
+#define CLK_PLL_PERIPH0_200M   8
+#define CLK_PLL_PERIPH0_160M   9
+#define CLK_PLL_PERIPH0_150M   10
+#define CLK_PLL_PERIPH1_4X     11
+#define CLK_PLL_PERIPH1_2X     12
+#define CLK_PLL_PERIPH1_800M   13
+#define CLK_PLL_PERIPH1_480M   14
+#define CLK_PLL_PERIPH1_600M   15
+#define CLK_PLL_PERIPH1_400M   16
+#define CLK_PLL_PERIPH1_300M   17
+#define CLK_PLL_PERIPH1_200M   18
+#define CLK_PLL_PERIPH1_160M   19
+#define CLK_PLL_PERIPH1_150M   20
+#define CLK_PLL_GPU            21
+#define CLK_PLL_VIDEO0_8X      22
+#define CLK_PLL_VIDEO0_4X      23
+#define CLK_PLL_VIDEO0_3X      24
+#define CLK_PLL_VIDEO1_8X      25
+#define CLK_PLL_VIDEO1_4X      26
+#define CLK_PLL_VIDEO1_3X      27
+#define CLK_PLL_VIDEO2_8X      28
+#define CLK_PLL_VIDEO2_4X      29
+#define CLK_PLL_VIDEO2_3X      30
+#define CLK_PLL_VIDEO3_8X      31
+#define CLK_PLL_VIDEO3_4X      32
+#define CLK_PLL_VIDEO3_3X      33
+#define CLK_PLL_VE             34
+#define CLK_PLL_AUDIO0_4X      35
+#define CLK_PLL_AUDIO0_2X      36
+#define CLK_PLL_AUDIO0         37
+#define CLK_PLL_NPU_4X         38
+#define CLK_PLL_NPU_2X         39
+#define CLK_PLL_NPU            40
+#define CLK_AHB                        41
+#define CLK_APB0               42
+#define CLK_APB1               43
+#define CLK_MBUS               44
+#define CLK_DE                 45
+#define CLK_BUS_DE             46
+#define CLK_DI                 47
+#define CLK_BUS_DI             48
+#define CLK_G2D                        49
+#define CLK_BUS_G2D            50
+#define CLK_GPU                        51
+#define CLK_BUS_GPU            52
+#define CLK_CE                 53
+#define CLK_BUS_CE             54
+#define CLK_BUS_CE_SYS         55
+#define CLK_VE                 56
+#define CLK_BUS_VE             57
+#define CLK_BUS_DMA            58
+#define CLK_BUS_MSGBOX         59
+#define CLK_BUS_SPINLOCK       60
+#define CLK_HSTIMER0           61
+#define CLK_HSTIMER1           62
+#define CLK_HSTIMER2           63
+#define CLK_HSTIMER3           64
+#define CLK_HSTIMER4           65
+#define CLK_HSTIMER5           66
+#define CLK_BUS_HSTIMER                67
+#define CLK_BUS_DBG            68
+#define CLK_BUS_PWM0           69
+#define CLK_BUS_PWM1           70
+#define CLK_IOMMU              71
+#define CLK_BUS_IOMMU          72
+#define CLK_DRAM               73
+#define CLK_MBUS_DMA           74
+#define CLK_MBUS_VE            75
+#define CLK_MBUS_CE            76
+#define CLK_MBUS_CSI           77
+#define CLK_MBUS_ISP           78
+#define CLK_MBUS_EMAC1         79
+#define CLK_BUS_DRAM           80
+#define CLK_NAND0              81
+#define CLK_NAND1              82
+#define CLK_BUS_NAND           83
+#define CLK_MMC0               84
+#define CLK_MMC1               85
+#define CLK_MMC2               86
+#define CLK_BUS_SYSDAP         87
+#define CLK_BUS_MMC0           88
+#define CLK_BUS_MMC1           89
+#define CLK_BUS_MMC2           90
+#define CLK_BUS_UART0          91
+#define CLK_BUS_UART1          92
+#define CLK_BUS_UART2          93
+#define CLK_BUS_UART3          94
+#define CLK_BUS_UART4          95
+#define CLK_BUS_UART5          96
+#define CLK_BUS_UART6          97
+#define CLK_BUS_UART7          98
+#define CLK_BUS_I2C0           99
+#define CLK_BUS_I2C1           100
+#define CLK_BUS_I2C2           101
+#define CLK_BUS_I2C3           102
+#define CLK_BUS_I2C4           103
+#define CLK_BUS_I2C5           104
+#define CLK_BUS_CAN            105
+#define CLK_SPI0               106
+#define CLK_SPI1               107
+#define CLK_SPI2               108
+#define CLK_SPIFC              109
+#define CLK_BUS_SPI0           110
+#define CLK_BUS_SPI1           111
+#define CLK_BUS_SPI2           112
+#define CLK_BUS_SPIFC          113
+#define CLK_EMAC0_25M          114
+#define CLK_EMAC1_25M          115
+#define CLK_BUS_EMAC0          116
+#define CLK_BUS_EMAC1          117
+#define CLK_IR_RX              118
+#define CLK_BUS_IR_RX          119
+#define CLK_IR_TX              120
+#define CLK_BUS_IR_TX          121
+#define CLK_GPADC0             122
+#define CLK_GPADC1             123
+#define CLK_BUS_GPADC0         124
+#define CLK_BUS_GPADC1         125
+#define CLK_BUS_THS            126
+#define CLK_USB_OHCI0          127
+#define CLK_USB_OHCI1          128
+#define CLK_BUS_OHCI0          129
+#define CLK_BUS_OHCI1          130
+#define CLK_BUS_EHCI0          131
+#define CLK_BUS_EHCI1          132
+#define CLK_BUS_OTG            133
+#define CLK_BUS_LRADC          134
+#define CLK_PCIE_AUX           135
+#define CLK_BUS_DISPLAY0_TOP   136
+#define CLK_BUS_DISPLAY1_TOP   137
+#define CLK_HDMI_24M           138
+#define CLK_HDMI_CEC_32K       139
+#define CLK_HDMI_CEC           140
+#define CLK_BUS_HDMI           141
+#define CLK_MIPI_DSI0          142
+#define CLK_MIPI_DSI1          143
+#define CLK_BUS_MIPI_DSI0      144
+#define CLK_BUS_MIPI_DSI1      145
+#define CLK_TCON_LCD0          146
+#define CLK_TCON_LCD1          147
+#define CLK_TCON_LCD2          148
+#define CLK_COMBOPHY_DSI0      149
+#define CLK_COMBOPHY_DSI1      150
+#define CLK_BUS_TCON_LCD0      151
+#define CLK_BUS_TCON_LCD1      152
+#define CLK_BUS_TCON_LCD2      153
+#define CLK_TCON_TV0           154
+#define CLK_TCON_TV1           155
+#define CLK_BUS_TCON_TV0       156
+#define CLK_BUS_TCON_TV1       157
+#define CLK_EDP                        158
+#define CLK_BUS_EDP            159
+#define CLK_LEDC               160
+#define CLK_BUS_LEDC           161
+#define CLK_CSI_TOP            162
+#define CLK_CSI_MCLK0          163
+#define CLK_CSI_MCLK1          164
+#define CLK_CSI_MCLK2          165
+#define CLK_CSI_MCLK3          166
+#define CLK_BUS_CSI            167
+#define CLK_ISP                        168
+#define CLK_DSP                        169
+#define CLK_FANOUT_24M         170
+#define CLK_FANOUT_12M         171
+#define CLK_FANOUT_16M         172
+#define CLK_FANOUT_25M         173
+#define CLK_FANOUT_27M         174
+#define CLK_FANOUT_PCLK                175
+#define CLK_FANOUT0            176
+#define CLK_FANOUT1            177
+#define CLK_FANOUT2            178
+
+#endif /* _DT_BINDINGS_CLK_SUN55I_A523_CCU_H_ */
diff --git a/include/dt-bindings/clock/sun55i-a523-r-ccu.h b/include/dt-bindings/clock/sun55i-a523-r-ccu.h
new file mode 100644 (file)
index 0000000..3656474
--- /dev/null
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/*
+ * Copyright (C) 2024 Arm Ltd.
+ */
+
+#ifndef _DT_BINDINGS_CLK_SUN55I_A523_R_CCU_H_
+#define _DT_BINDINGS_CLK_SUN55I_A523_R_CCU_H_
+
+#define CLK_R_AHB              0
+#define CLK_R_APB0             1
+#define CLK_R_APB1             2
+#define CLK_R_TIMER0           3
+#define CLK_R_TIMER1           4
+#define CLK_R_TIMER2           5
+#define CLK_BUS_R_TIMER                6
+#define CLK_BUS_R_TWD          7
+#define CLK_R_PWMCTRL          8
+#define CLK_BUS_R_PWMCTRL      9
+#define CLK_R_SPI              10
+#define CLK_BUS_R_SPI          11
+#define CLK_BUS_R_SPINLOCK     12
+#define CLK_BUS_R_MSGBOX       13
+#define CLK_BUS_R_UART0                14
+#define CLK_BUS_R_UART1                15
+#define CLK_BUS_R_I2C0         16
+#define CLK_BUS_R_I2C1         17
+#define CLK_BUS_R_I2C2         18
+#define CLK_BUS_R_PPU0         19
+#define CLK_BUS_R_PPU1         20
+#define CLK_BUS_R_CPU_BIST     21
+#define CLK_R_IR_RX            22
+#define CLK_BUS_R_IR_RX                23
+#define CLK_BUS_R_DMA          24
+#define CLK_BUS_R_RTC          25
+#define CLK_BUS_R_CPUCFG       26
+
+#endif /* _DT_BINDINGS_CLK_SUN55I_A523_R_CCU_H_ */
index cdc4c0b..f0f7ddd 100644 (file)
@@ -9,6 +9,13 @@
 #ifndef _DT_BINDINGS_CLK_ZYNQMP_H
 #define _DT_BINDINGS_CLK_ZYNQMP_H
 
+/*
+ * These bindings are deprecated, because they do not match the actual
+ * concept of bindings but rather contain pure firmware values.
+ * Instead include the header in the DTS source directory.
+ */
+#warning "These bindings are deprecated. Instead use the header in the DTS source directory."
+
 #define IOPLL                  0
 #define RPLL                   1
 #define APLL                   2
index 9fbef54..fea4525 100644 (file)
@@ -6,4 +6,11 @@
 #define AD4695_COMMON_MODE_REFGND      0xFF
 #define AD4695_COMMON_MODE_COM         0xFE
 
+#define AD4695_TRIGGER_EVENT_BUSY      0
+#define AD4695_TRIGGER_EVENT_ALERT     1
+
+#define AD4695_TRIGGER_PIN_GP0         0
+#define AD4695_TRIGGER_PIN_GP2         2
+#define AD4695_TRIGGER_PIN_GP3         3
+
 #endif /* _DT_BINDINGS_ADI_AD4695_H */
diff --git a/include/dt-bindings/pinctrl/amlogic,pinctrl.h b/include/dt-bindings/pinctrl/amlogic,pinctrl.h
new file mode 100644 (file)
index 0000000..7d40aec
--- /dev/null
@@ -0,0 +1,46 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/*
+ * Copyright (c) 2024 Amlogic, Inc. All rights reserved.
+ * Author: Xianwei Zhao <xianwei.zhao@amlogic.com>
+ */
+
+#ifndef _DT_BINDINGS_AMLOGIC_PINCTRL_H
+#define _DT_BINDINGS_AMLOGIC_PINCTRL_H
+/* Normal PIN bank */
+#define AMLOGIC_GPIO_A         0
+#define AMLOGIC_GPIO_B         1
+#define AMLOGIC_GPIO_C         2
+#define AMLOGIC_GPIO_D         3
+#define AMLOGIC_GPIO_E         4
+#define AMLOGIC_GPIO_F         5
+#define AMLOGIC_GPIO_G         6
+#define AMLOGIC_GPIO_H         7
+#define AMLOGIC_GPIO_I         8
+#define AMLOGIC_GPIO_J         9
+#define AMLOGIC_GPIO_K         10
+#define AMLOGIC_GPIO_L         11
+#define AMLOGIC_GPIO_M         12
+#define AMLOGIC_GPIO_N         13
+#define AMLOGIC_GPIO_O         14
+#define AMLOGIC_GPIO_P         15
+#define AMLOGIC_GPIO_Q         16
+#define AMLOGIC_GPIO_R         17
+#define AMLOGIC_GPIO_S         18
+#define AMLOGIC_GPIO_T         19
+#define AMLOGIC_GPIO_U         20
+#define AMLOGIC_GPIO_V         21
+#define AMLOGIC_GPIO_W         22
+#define AMLOGIC_GPIO_X         23
+#define AMLOGIC_GPIO_Y         24
+#define AMLOGIC_GPIO_Z         25
+
+/* Special PIN bank */
+#define AMLOGIC_GPIO_DV                26
+#define AMLOGIC_GPIO_AO                27
+#define AMLOGIC_GPIO_CC                28
+#define AMLOGIC_GPIO_TEST_N    29
+#define AMLOGIC_GPIO_ANALOG    30
+
+#define AML_PINMUX(bank, offset, mode) (((((bank) << 8) + (offset)) << 8) | (mode))
+
+#endif /* _DT_BINDINGS_AMLOGIC_PINCTRL_H */
diff --git a/include/dt-bindings/pinctrl/pinctrl-sg2042.h b/include/dt-bindings/pinctrl/pinctrl-sg2042.h
new file mode 100644 (file)
index 0000000..79d5bb8
--- /dev/null
@@ -0,0 +1,196 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+/*
+ * Copyright (C) 2024 Inochi Amaoto <inochiama@outlook.com>
+ *
+ */
+
+#ifndef _DT_BINDINGS_PINCTRL_SG2042_H
+#define _DT_BINDINGS_PINCTRL_SG2042_H
+
+#define PINMUX(pin, mux) \
+       (((pin) & 0xffff) | (((mux) & 0xff) << 16))
+
+#define PIN_LPC_LCLK                   0
+#define PIN_LPC_LFRAME                 1
+#define PIN_LPC_LAD0                   2
+#define PIN_LPC_LAD1                   3
+#define PIN_LPC_LAD2                   4
+#define PIN_LPC_LAD3                   5
+#define PIN_LPC_LDRQ0                  6
+#define PIN_LPC_LDRQ1                  7
+#define PIN_LPC_SERIRQ                 8
+#define PIN_LPC_CLKRUN                 9
+#define PIN_LPC_LPME                   10
+#define PIN_LPC_LPCPD                  11
+#define PIN_LPC_LSMI                   12
+#define PIN_PCIE0_L0_RESET             13
+#define PIN_PCIE0_L1_RESET             14
+#define PIN_PCIE0_L0_WAKEUP            15
+#define PIN_PCIE0_L1_WAKEUP            16
+#define PIN_PCIE0_L0_CLKREQ_IN         17
+#define PIN_PCIE0_L1_CLKREQ_IN         18
+#define PIN_PCIE1_L0_RESET             19
+#define PIN_PCIE1_L1_RESET             20
+#define PIN_PCIE1_L0_WAKEUP            21
+#define PIN_PCIE1_L1_WAKEUP            22
+#define PIN_PCIE1_L0_CLKREQ_IN         23
+#define PIN_PCIE1_L1_CLKREQ_IN         24
+#define PIN_SPIF0_CLK_SEL1             25
+#define PIN_SPIF0_CLK_SEL0             26
+#define PIN_SPIF0_WP                   27
+#define PIN_SPIF0_HOLD                 28
+#define PIN_SPIF0_SDI                  29
+#define PIN_SPIF0_CS                   30
+#define PIN_SPIF0_SCK                  31
+#define PIN_SPIF0_SDO                  32
+#define PIN_SPIF1_CLK_SEL1             33
+#define PIN_SPIF1_CLK_SEL0             34
+#define PIN_SPIF1_WP                   35
+#define PIN_SPIF1_HOLD                 36
+#define PIN_SPIF1_SDI                  37
+#define PIN_SPIF1_CS                   38
+#define PIN_SPIF1_SCK                  39
+#define PIN_SPIF1_SDO                  40
+#define PIN_EMMC_WP                    41
+#define PIN_EMMC_CD                    42
+#define PIN_EMMC_RST                   43
+#define PIN_EMMC_PWR_EN                        44
+#define PIN_SDIO_CD                    45
+#define PIN_SDIO_WP                    46
+#define PIN_SDIO_RST                   47
+#define PIN_SDIO_PWR_EN                        48
+#define PIN_RGMII0_TXD0                        49
+#define PIN_RGMII0_TXD1                        50
+#define PIN_RGMII0_TXD2                        51
+#define PIN_RGMII0_TXD3                        52
+#define PIN_RGMII0_TXCTRL              53
+#define PIN_RGMII0_RXD0                        54
+#define PIN_RGMII0_RXD1                        55
+#define PIN_RGMII0_RXD2                        56
+#define PIN_RGMII0_RXD3                        57
+#define PIN_RGMII0_RXCTRL              58
+#define PIN_RGMII0_TXC                 59
+#define PIN_RGMII0_RXC                 60
+#define PIN_RGMII0_REFCLKO             61
+#define PIN_RGMII0_IRQ                 62
+#define PIN_RGMII0_MDC                 63
+#define PIN_RGMII0_MDIO                        64
+#define PIN_PWM0                       65
+#define PIN_PWM1                       66
+#define PIN_PWM2                       67
+#define PIN_PWM3                       68
+#define PIN_FAN0                       69
+#define PIN_FAN1                       70
+#define PIN_FAN2                       71
+#define PIN_FAN3                       72
+#define PIN_IIC0_SDA                   73
+#define PIN_IIC0_SCL                   74
+#define PIN_IIC1_SDA                   75
+#define PIN_IIC1_SCL                   76
+#define PIN_IIC2_SDA                   77
+#define PIN_IIC2_SCL                   78
+#define PIN_IIC3_SDA                   79
+#define PIN_IIC3_SCL                   80
+#define PIN_UART0_TX                   81
+#define PIN_UART0_RX                   82
+#define PIN_UART0_RTS                  83
+#define PIN_UART0_CTS                  84
+#define PIN_UART1_TX                   85
+#define PIN_UART1_RX                   86
+#define PIN_UART1_RTS                  87
+#define PIN_UART1_CTS                  88
+#define PIN_UART2_TX                   89
+#define PIN_UART2_RX                   90
+#define PIN_UART2_RTS                  91
+#define PIN_UART2_CTS                  92
+#define PIN_UART3_TX                   93
+#define PIN_UART3_RX                   94
+#define PIN_UART3_RTS                  95
+#define PIN_UART3_CTS                  96
+#define PIN_SPI0_CS0                   97
+#define PIN_SPI0_CS1                   98
+#define PIN_SPI0_SDI                   99
+#define PIN_SPI0_SDO                   100
+#define PIN_SPI0_SCK                   101
+#define PIN_SPI1_CS0                   102
+#define PIN_SPI1_CS1                   103
+#define PIN_SPI1_SDI                   104
+#define PIN_SPI1_SDO                   105
+#define PIN_SPI1_SCK                   106
+#define PIN_JTAG0_TDO                  107
+#define PIN_JTAG0_TCK                  108
+#define PIN_JTAG0_TDI                  109
+#define PIN_JTAG0_TMS                  110
+#define PIN_JTAG0_TRST                 111
+#define PIN_JTAG0_SRST                 112
+#define PIN_JTAG1_TDO                  113
+#define PIN_JTAG1_TCK                  114
+#define PIN_JTAG1_TDI                  115
+#define PIN_JTAG1_TMS                  116
+#define PIN_JTAG1_TRST                 117
+#define PIN_JTAG1_SRST                 118
+#define PIN_JTAG2_TDO                  119
+#define PIN_JTAG2_TCK                  120
+#define PIN_JTAG2_TDI                  121
+#define PIN_JTAG2_TMS                  122
+#define PIN_JTAG2_TRST                 123
+#define PIN_JTAG2_SRST                 124
+#define PIN_GPIO0                      125
+#define PIN_GPIO1                      126
+#define PIN_GPIO2                      127
+#define PIN_GPIO3                      128
+#define PIN_GPIO4                      129
+#define PIN_GPIO5                      130
+#define PIN_GPIO6                      131
+#define PIN_GPIO7                      132
+#define PIN_GPIO8                      133
+#define PIN_GPIO9                      134
+#define PIN_GPIO10                     135
+#define PIN_GPIO11                     136
+#define PIN_GPIO12                     137
+#define PIN_GPIO13                     138
+#define PIN_GPIO14                     139
+#define PIN_GPIO15                     140
+#define PIN_GPIO16                     141
+#define PIN_GPIO17                     142
+#define PIN_GPIO18                     143
+#define PIN_GPIO19                     144
+#define PIN_GPIO20                     145
+#define PIN_GPIO21                     146
+#define PIN_GPIO22                     147
+#define PIN_GPIO23                     148
+#define PIN_GPIO24                     149
+#define PIN_GPIO25                     150
+#define PIN_GPIO26                     151
+#define PIN_GPIO27                     152
+#define PIN_GPIO28                     153
+#define PIN_GPIO29                     154
+#define PIN_GPIO30                     155
+#define PIN_GPIO31                     156
+#define PIN_MODE_SEL0                  157
+#define PIN_MODE_SEL1                  158
+#define PIN_MODE_SEL2                  159
+#define PIN_BOOT_SEL0                  160
+#define PIN_BOOT_SEL1                  161
+#define PIN_BOOT_SEL2                  162
+#define PIN_BOOT_SEL3                  163
+#define PIN_BOOT_SEL4                  164
+#define PIN_BOOT_SEL5                  165
+#define PIN_BOOT_SEL6                  166
+#define PIN_BOOT_SEL7                  167
+#define PIN_MULTI_SCKT                 168
+#define PIN_SCKT_ID0                   169
+#define PIN_SCKT_ID1                   170
+#define PIN_PLL_CLK_IN_MAIN            171
+#define PIN_PLL_CLK_IN_DDR_L           172
+#define PIN_PLL_CLK_IN_DDR_R           173
+#define PIN_XTAL_32K                   174
+#define PIN_SYS_RST                    175
+#define PIN_PWR_BUTTON                 176
+#define PIN_TEST_EN                    177
+#define PIN_TEST_MODE_MBIST            178
+#define PIN_TEST_MODE_SCAN             179
+#define PIN_TEST_MODE_BSD              180
+#define PIN_BISR_BYP                   181
+
+#endif /* _DT_BINDINGS_PINCTRL_SG2042_H */
diff --git a/include/dt-bindings/pinctrl/pinctrl-sg2044.h b/include/dt-bindings/pinctrl/pinctrl-sg2044.h
new file mode 100644 (file)
index 0000000..2a619f6
--- /dev/null
@@ -0,0 +1,221 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+/*
+ * Copyright (C) 2024 Inochi Amaoto <inochiama@outlook.com>
+ *
+ */
+
+#ifndef _DT_BINDINGS_PINCTRL_SG2044_H
+#define _DT_BINDINGS_PINCTRL_SG2044_H
+
+#define PINMUX(pin, mux) \
+       (((pin) & 0xffff) | (((mux) & 0xff) << 16))
+
+#define PIN_IIC0_SMBSUS_IN             0
+#define PIN_IIC0_SMBSUS_OUT            1
+#define PIN_IIC0_SMBALERT              2
+#define PIN_IIC1_SMBSUS_IN             3
+#define PIN_IIC1_SMBSUS_OUT            4
+#define PIN_IIC1_SMBALERT              5
+#define PIN_IIC2_SMBSUS_IN             6
+#define PIN_IIC2_SMBSUS_OUT            7
+#define PIN_IIC2_SMBALERT              8
+#define PIN_IIC3_SMBSUS_IN             9
+#define PIN_IIC3_SMBSUS_OUT            10
+#define PIN_IIC3_SMBALERT              11
+#define PIN_PCIE0_L0_RESET             12
+#define PIN_PCIE0_L1_RESET             13
+#define PIN_PCIE0_L0_WAKEUP            14
+#define PIN_PCIE0_L1_WAKEUP            15
+#define PIN_PCIE0_L0_CLKREQ_IN         16
+#define PIN_PCIE0_L1_CLKREQ_IN         17
+#define PIN_PCIE1_L0_RESET             18
+#define PIN_PCIE1_L1_RESET             19
+#define PIN_PCIE1_L0_WAKEUP            20
+#define PIN_PCIE1_L1_WAKEUP            21
+#define PIN_PCIE1_L0_CLKREQ_IN         22
+#define PIN_PCIE1_L1_CLKREQ_IN         23
+#define PIN_PCIE2_L0_RESET             24
+#define PIN_PCIE2_L1_RESET             25
+#define PIN_PCIE2_L0_WAKEUP            26
+#define PIN_PCIE2_L1_WAKEUP            27
+#define PIN_PCIE2_L0_CLKREQ_IN         28
+#define PIN_PCIE2_L1_CLKREQ_IN         29
+#define PIN_PCIE3_L0_RESET             30
+#define PIN_PCIE3_L1_RESET             31
+#define PIN_PCIE3_L0_WAKEUP            32
+#define PIN_PCIE3_L1_WAKEUP            33
+#define PIN_PCIE3_L0_CLKREQ_IN         34
+#define PIN_PCIE3_L1_CLKREQ_IN         35
+#define PIN_PCIE4_L0_RESET             36
+#define PIN_PCIE4_L1_RESET             37
+#define PIN_PCIE4_L0_WAKEUP            38
+#define PIN_PCIE4_L1_WAKEUP            39
+#define PIN_PCIE4_L0_CLKREQ_IN         40
+#define PIN_PCIE4_L1_CLKREQ_IN         41
+#define PIN_SPIF0_CLK_SEL1             42
+#define PIN_SPIF0_CLK_SEL0             43
+#define PIN_SPIF0_WP                   44
+#define PIN_SPIF0_HOLD                 45
+#define PIN_SPIF0_SDI                  46
+#define PIN_SPIF0_CS                   47
+#define PIN_SPIF0_SCK                  48
+#define PIN_SPIF0_SDO                  49
+#define PIN_SPIF1_CLK_SEL1             50
+#define PIN_SPIF1_CLK_SEL0             51
+#define PIN_SPIF1_WP                   52
+#define PIN_SPIF1_HOLD                 53
+#define PIN_SPIF1_SDI                  54
+#define PIN_SPIF1_CS                   55
+#define PIN_SPIF1_SCK                  56
+#define PIN_SPIF1_SDO                  57
+#define PIN_EMMC_WP                    58
+#define PIN_EMMC_CD                    59
+#define PIN_EMMC_RST                   60
+#define PIN_EMMC_PWR_EN                        61
+#define PIN_SDIO_CD                    62
+#define PIN_SDIO_WP                    63
+#define PIN_SDIO_RST                   64
+#define PIN_SDIO_PWR_EN                        65
+#define PIN_RGMII0_TXD0                        66
+#define PIN_RGMII0_TXD1                        67
+#define PIN_RGMII0_TXD2                        68
+#define PIN_RGMII0_TXD3                        69
+#define PIN_RGMII0_TXCTRL              70
+#define PIN_RGMII0_RXD0                        71
+#define PIN_RGMII0_RXD1                        72
+#define PIN_RGMII0_RXD2                        73
+#define PIN_RGMII0_RXD3                        74
+#define PIN_RGMII0_RXCTRL              75
+#define PIN_RGMII0_TXC                 76
+#define PIN_RGMII0_RXC                 77
+#define PIN_RGMII0_REFCLKO             78
+#define PIN_RGMII0_IRQ                 79
+#define PIN_RGMII0_MDC                 80
+#define PIN_RGMII0_MDIO                        81
+#define PIN_PWM0                       82
+#define PIN_PWM1                       83
+#define PIN_PWM2                       84
+#define PIN_PWM3                       85
+#define PIN_FAN0                       86
+#define PIN_FAN1                       87
+#define PIN_FAN2                       88
+#define PIN_FAN3                       89
+#define PIN_IIC0_SDA                   90
+#define PIN_IIC0_SCL                   91
+#define PIN_IIC1_SDA                   92
+#define PIN_IIC1_SCL                   93
+#define PIN_IIC2_SDA                   94
+#define PIN_IIC2_SCL                   95
+#define PIN_IIC3_SDA                   96
+#define PIN_IIC3_SCL                   97
+#define PIN_UART0_TX                   98
+#define PIN_UART0_RX                   99
+#define PIN_UART0_RTS                  100
+#define PIN_UART0_CTS                  101
+#define PIN_UART1_TX                   102
+#define PIN_UART1_RX                   103
+#define PIN_UART1_RTS                  104
+#define PIN_UART1_CTS                  105
+#define PIN_UART2_TX                   106
+#define PIN_UART2_RX                   107
+#define PIN_UART2_RTS                  108
+#define PIN_UART2_CTS                  109
+#define PIN_UART3_TX                   110
+#define PIN_UART3_RX                   111
+#define PIN_UART3_RTS                  112
+#define PIN_UART3_CTS                  113
+#define PIN_SPI0_CS0                   114
+#define PIN_SPI0_CS1                   115
+#define PIN_SPI0_SDI                   116
+#define PIN_SPI0_SDO                   117
+#define PIN_SPI0_SCK                   118
+#define PIN_SPI1_CS0                   119
+#define PIN_SPI1_CS1                   120
+#define PIN_SPI1_SDI                   121
+#define PIN_SPI1_SDO                   122
+#define PIN_SPI1_SCK                   123
+#define PIN_JTAG0_TDO                  124
+#define PIN_JTAG0_TCK                  125
+#define PIN_JTAG0_TDI                  126
+#define PIN_JTAG0_TMS                  127
+#define PIN_JTAG0_TRST                 128
+#define PIN_JTAG0_SRST                 129
+#define PIN_JTAG1_TDO                  130
+#define PIN_JTAG1_TCK                  131
+#define PIN_JTAG1_TDI                  132
+#define PIN_JTAG1_TMS                  133
+#define PIN_JTAG1_TRST                 134
+#define PIN_JTAG1_SRST                 135
+#define PIN_JTAG2_TDO                  136
+#define PIN_JTAG2_TCK                  137
+#define PIN_JTAG2_TDI                  138
+#define PIN_JTAG2_TMS                  139
+#define PIN_JTAG2_TRST                 140
+#define PIN_JTAG2_SRST                 141
+#define PIN_JTAG3_TDO                  142
+#define PIN_JTAG3_TCK                  143
+#define PIN_JTAG3_TDI                  144
+#define PIN_JTAG3_TMS                  145
+#define PIN_JTAG3_TRST                 146
+#define PIN_JTAG3_SRST                 147
+#define PIN_GPIO0                      148
+#define PIN_GPIO1                      149
+#define PIN_GPIO2                      150
+#define PIN_GPIO3                      151
+#define PIN_GPIO4                      152
+#define PIN_GPIO5                      153
+#define PIN_GPIO6                      154
+#define PIN_GPIO7                      155
+#define PIN_GPIO8                      156
+#define PIN_GPIO9                      157
+#define PIN_GPIO10                     158
+#define PIN_GPIO11                     159
+#define PIN_GPIO12                     160
+#define PIN_GPIO13                     161
+#define PIN_GPIO14                     162
+#define PIN_GPIO15                     163
+#define PIN_GPIO16                     164
+#define PIN_GPIO17                     165
+#define PIN_GPIO18                     166
+#define PIN_GPIO19                     167
+#define PIN_GPIO20                     168
+#define PIN_GPIO21                     169
+#define PIN_GPIO22                     170
+#define PIN_GPIO23                     171
+#define PIN_GPIO24                     172
+#define PIN_GPIO25                     173
+#define PIN_GPIO26                     174
+#define PIN_GPIO27                     175
+#define PIN_GPIO28                     176
+#define PIN_GPIO29                     177
+#define PIN_GPIO30                     178
+#define PIN_GPIO31                     179
+#define PIN_MODE_SEL0                  180
+#define PIN_MODE_SEL1                  181
+#define PIN_MODE_SEL2                  182
+#define PIN_BOOT_SEL0                  183
+#define PIN_BOOT_SEL1                  184
+#define PIN_BOOT_SEL2                  185
+#define PIN_BOOT_SEL3                  186
+#define PIN_BOOT_SEL4                  187
+#define PIN_BOOT_SEL5                  188
+#define PIN_BOOT_SEL6                  189
+#define PIN_BOOT_SEL7                  190
+#define PIN_MULTI_SCKT                 191
+#define PIN_SCKT_ID0                   192
+#define PIN_SCKT_ID1                   193
+#define PIN_PLL_CLK_IN_MAIN            194
+#define PIN_PLL_CLK_IN_DDR_0           195
+#define PIN_PLL_CLK_IN_DDR_1           196
+#define PIN_PLL_CLK_IN_DDR_2           197
+#define PIN_PLL_CLK_IN_DDR_3           198
+#define PIN_XTAL_32K                   199
+#define PIN_SYS_RST                    200
+#define PIN_PWR_BUTTON                 201
+#define PIN_TEST_EN                    202
+#define PIN_TEST_MODE_MBIST            203
+#define PIN_TEST_MODE_SCAN             204
+#define PIN_TEST_MODE_BSD              205
+#define PIN_BISR_BYP                   206
+
+#endif /* _DT_BINDINGS_PINCTRL_SG2044_H */
diff --git a/include/dt-bindings/power/allwinner,sun8i-v853-ppu.h b/include/dt-bindings/power/allwinner,sun8i-v853-ppu.h
new file mode 100644 (file)
index 0000000..b1c18a4
--- /dev/null
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+
+#ifndef _DT_BINDINGS_POWER_SUN8I_V853_PPU_H_
+#define _DT_BINDINGS_POWER_SUN8I_V853_PPU_H_
+
+#define PD_RISCV               0
+#define PD_NPU                 1
+#define PD_VE                  2
+
+#endif
index df599bf..d9b7bac 100644 (file)
@@ -65,7 +65,7 @@
 #define SM6350_MSS     4
 #define SM6350_MX      5
 
-/* SM6350 Power Domain Indexes */
+/* SM6375 Power Domain Indexes */
 #define SM6375_VDDCX           0
 #define SM6375_VDDCX_AO        1
 #define SM6375_VDDCX_VFL       2
diff --git a/include/dt-bindings/power/thead,th1520-power.h b/include/dt-bindings/power/thead,th1520-power.h
new file mode 100644 (file)
index 0000000..8395bd1
--- /dev/null
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (C) 2022 Alibaba Group Holding Limited.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Author: Michal Wilczynski <m.wilczynski@samsung.com>
+ */
+
+#ifndef __DT_BINDINGS_POWER_TH1520_H
+#define __DT_BINDINGS_POWER_TH1520_H
+
+#define TH1520_AUDIO_PD                0
+#define TH1520_VDEC_PD         1
+#define TH1520_NPU_PD          2
+#define TH1520_VENC_PD         3
+#define TH1520_GPU_PD          4
+#define TH1520_DSP0_PD         5
+#define TH1520_DSP1_PD         6
+
+#endif
diff --git a/include/dt-bindings/reset/imx8mp-reset-audiomix.h b/include/dt-bindings/reset/imx8mp-reset-audiomix.h
new file mode 100644 (file)
index 0000000..746c133
--- /dev/null
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR MIT */
+/*
+ * Copyright 2025 NXP
+ */
+
+#ifndef DT_BINDING_RESET_IMX8MP_AUDIOMIX_H
+#define DT_BINDING_RESET_IMX8MP_AUDIOMIX_H
+
+#define IMX8MP_AUDIOMIX_EARC_RESET     0
+#define IMX8MP_AUDIOMIX_EARC_PHY_RESET 1
+#define IMX8MP_AUDIOMIX_DSP_RUNSTALL   2
+
+#endif /* DT_BINDING_RESET_IMX8MP_AUDIOMIX_H */
diff --git a/include/dt-bindings/reset/qcom,ipq9574-nsscc.h b/include/dt-bindings/reset/qcom,ipq9574-nsscc.h
new file mode 100644 (file)
index 0000000..7f152e9
--- /dev/null
@@ -0,0 +1,134 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2023, 2025 The Linux Foundation. All rights reserved.
+ */
+
+#ifndef _DT_BINDINGS_RESET_IPQ_NSSCC_9574_H
+#define _DT_BINDINGS_RESET_IPQ_NSSCC_9574_H
+
+#define EDMA_HW_RESET                   0
+#define NSS_CC_CE_BCR                  1
+#define NSS_CC_CLC_BCR                 2
+#define NSS_CC_EIP197_BCR              3
+#define NSS_CC_HAQ_BCR                 4
+#define NSS_CC_IMEM_BCR                        5
+#define NSS_CC_MAC_BCR                 6
+#define NSS_CC_PPE_BCR                 7
+#define NSS_CC_UBI_BCR                 8
+#define NSS_CC_UNIPHY_BCR              9
+#define UBI3_CLKRST_CLAMP_ENABLE       10
+#define UBI3_CORE_CLAMP_ENABLE         11
+#define UBI2_CLKRST_CLAMP_ENABLE       12
+#define UBI2_CORE_CLAMP_ENABLE         13
+#define UBI1_CLKRST_CLAMP_ENABLE       14
+#define UBI1_CORE_CLAMP_ENABLE         15
+#define UBI0_CLKRST_CLAMP_ENABLE       16
+#define UBI0_CORE_CLAMP_ENABLE         17
+#define NSSNOC_NSS_CSR_ARES            18
+#define NSS_CSR_ARES                   19
+#define PPE_BTQ_ARES                   20
+#define PPE_IPE_ARES                   21
+#define PPE_ARES                       22
+#define PPE_CFG_ARES                   23
+#define PPE_EDMA_ARES                  24
+#define PPE_EDMA_CFG_ARES              25
+#define CRY_PPE_ARES                   26
+#define NSSNOC_PPE_ARES                        27
+#define NSSNOC_PPE_CFG_ARES            28
+#define PORT1_MAC_ARES                 29
+#define PORT2_MAC_ARES                 30
+#define PORT3_MAC_ARES                 31
+#define PORT4_MAC_ARES                 32
+#define PORT5_MAC_ARES                 33
+#define PORT6_MAC_ARES                 34
+#define XGMAC0_PTP_REF_ARES            35
+#define XGMAC1_PTP_REF_ARES            36
+#define XGMAC2_PTP_REF_ARES            37
+#define XGMAC3_PTP_REF_ARES            38
+#define XGMAC4_PTP_REF_ARES            39
+#define XGMAC5_PTP_REF_ARES            40
+#define HAQ_AHB_ARES                   41
+#define HAQ_AXI_ARES                   42
+#define NSSNOC_HAQ_AHB_ARES            43
+#define NSSNOC_HAQ_AXI_ARES            44
+#define CE_APB_ARES                    45
+#define CE_AXI_ARES                    46
+#define NSSNOC_CE_APB_ARES             47
+#define NSSNOC_CE_AXI_ARES             48
+#define CRYPTO_ARES                    49
+#define NSSNOC_CRYPTO_ARES             50
+#define NSSNOC_NC_AXI0_1_ARES          51
+#define UBI0_CORE_ARES                 52
+#define UBI1_CORE_ARES                 53
+#define UBI2_CORE_ARES                 54
+#define UBI3_CORE_ARES                 55
+#define NC_AXI0_ARES                   56
+#define UTCM0_ARES                     57
+#define NC_AXI1_ARES                   58
+#define UTCM1_ARES                     59
+#define NC_AXI2_ARES                   60
+#define UTCM2_ARES                     61
+#define NC_AXI3_ARES                   62
+#define UTCM3_ARES                     63
+#define NSSNOC_NC_AXI0_ARES            64
+#define AHB0_ARES                      65
+#define INTR0_AHB_ARES                 66
+#define AHB1_ARES                      67
+#define INTR1_AHB_ARES                 68
+#define AHB2_ARES                      69
+#define INTR2_AHB_ARES                 70
+#define AHB3_ARES                      71
+#define INTR3_AHB_ARES                 72
+#define NSSNOC_AHB0_ARES               73
+#define NSSNOC_INT0_AHB_ARES           74
+#define AXI0_ARES                      75
+#define AXI1_ARES                      76
+#define AXI2_ARES                      77
+#define AXI3_ARES                      78
+#define NSSNOC_AXI0_ARES               79
+#define IMEM_QSB_ARES                  80
+#define NSSNOC_IMEM_QSB_ARES           81
+#define IMEM_AHB_ARES                  82
+#define NSSNOC_IMEM_AHB_ARES           83
+#define UNIPHY_PORT1_RX_ARES           84
+#define UNIPHY_PORT1_TX_ARES           85
+#define UNIPHY_PORT2_RX_ARES           86
+#define UNIPHY_PORT2_TX_ARES           87
+#define UNIPHY_PORT3_RX_ARES           88
+#define UNIPHY_PORT3_TX_ARES           89
+#define UNIPHY_PORT4_RX_ARES           90
+#define UNIPHY_PORT4_TX_ARES           91
+#define UNIPHY_PORT5_RX_ARES           92
+#define UNIPHY_PORT5_TX_ARES           93
+#define UNIPHY_PORT6_RX_ARES           94
+#define UNIPHY_PORT6_TX_ARES           95
+#define PORT1_RX_ARES                  96
+#define PORT1_TX_ARES                  97
+#define PORT2_RX_ARES                  98
+#define PORT2_TX_ARES                  99
+#define PORT3_RX_ARES                  100
+#define PORT3_TX_ARES                  101
+#define PORT4_RX_ARES                  102
+#define PORT4_TX_ARES                  103
+#define PORT5_RX_ARES                  104
+#define PORT5_TX_ARES                  105
+#define PORT6_RX_ARES                  106
+#define PORT6_TX_ARES                  107
+#define PPE_FULL_RESET                 108
+#define UNIPHY0_SOFT_RESET             109
+#define UNIPHY1_SOFT_RESET             110
+#define UNIPHY2_SOFT_RESET             111
+#define UNIPHY_PORT1_ARES              112
+#define UNIPHY_PORT2_ARES              113
+#define UNIPHY_PORT3_ARES              114
+#define UNIPHY_PORT4_ARES              115
+#define UNIPHY_PORT5_ARES              116
+#define UNIPHY_PORT6_ARES              117
+#define NSSPORT1_RESET                 118
+#define NSSPORT2_RESET                 119
+#define NSSPORT3_RESET                 120
+#define NSSPORT4_RESET                 121
+#define NSSPORT5_RESET                 122
+#define NSSPORT6_RESET                 123
+
+#endif
diff --git a/include/dt-bindings/reset/rockchip,rk3528-cru.h b/include/dt-bindings/reset/rockchip,rk3528-cru.h
new file mode 100644 (file)
index 0000000..6b024c5
--- /dev/null
@@ -0,0 +1,241 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/*
+ * Copyright (c) 2022 Rockchip Electronics Co. Ltd.
+ * Copyright (c) 2024 Yao Zi <ziyao@disroot.org>
+ * Author: Joseph Chen <chenjh@rock-chips.com>
+ */
+
+#ifndef _DT_BINDINGS_RESET_ROCKCHIP_RK3528_H
+#define _DT_BINDINGS_RESET_ROCKCHIP_RK3528_H
+
+#define SRST_CORE0_PO          0
+#define SRST_CORE1_PO          1
+#define SRST_CORE2_PO          2
+#define SRST_CORE3_PO          3
+#define SRST_CORE0             4
+#define SRST_CORE1             5
+#define SRST_CORE2             6
+#define SRST_CORE3             7
+#define SRST_NL2               8
+#define SRST_CORE_BIU          9
+#define SRST_CORE_CRYPTO       10
+#define SRST_P_DBG             11
+#define SRST_POT_DBG           12
+#define SRST_NT_DBG            13
+#define SRST_P_CORE_GRF                14
+#define SRST_P_DAPLITE_BIU     15
+#define SRST_P_CPU_BIU         16
+#define SRST_REF_PVTPLL_CORE   17
+#define SRST_A_BUS_VOPGL_BIU   18
+#define SRST_A_BUS_H_BIU       19
+#define SRST_A_SYSMEM_BIU      20
+#define SRST_A_BUS_BIU         21
+#define SRST_H_BUS_BIU         22
+#define SRST_P_BUS_BIU         23
+#define SRST_P_DFT2APB         24
+#define SRST_P_BUS_GRF         25
+#define SRST_A_BUS_M_BIU       26
+#define SRST_A_GIC             27
+#define SRST_A_SPINLOCK                28
+#define SRST_A_DMAC            29
+#define SRST_P_TIMER           30
+#define SRST_TIMER0            31
+#define SRST_TIMER1            32
+#define SRST_TIMER2            33
+#define SRST_TIMER3            34
+#define SRST_TIMER4            35
+#define SRST_TIMER5            36
+#define SRST_P_JDBCK_DAP       37
+#define SRST_JDBCK_DAP         38
+#define SRST_P_WDT_NS          39
+#define SRST_T_WDT_NS          40
+#define SRST_H_TRNG_NS         41
+#define SRST_P_UART0           42
+#define SRST_S_UART0           43
+#define SRST_PKA_CRYPTO                44
+#define SRST_A_CRYPTO          45
+#define SRST_H_CRYPTO          46
+#define SRST_P_DMA2DDR         47
+#define SRST_A_DMA2DDR         48
+#define SRST_P_PWM0            49
+#define SRST_PWM0              50
+#define SRST_P_PWM1            51
+#define SRST_PWM1              52
+#define SRST_P_SCR             53
+#define SRST_A_DCF             54
+#define SRST_P_INTMUX          55
+#define SRST_A_VPU_BIU         56
+#define SRST_H_VPU_BIU         57
+#define SRST_P_VPU_BIU         58
+#define SRST_A_VPU             59
+#define SRST_H_VPU             60
+#define SRST_P_CRU_PCIE                61
+#define SRST_P_VPU_GRF         62
+#define SRST_H_SFC             63
+#define SRST_S_SFC             64
+#define SRST_C_EMMC            65
+#define SRST_H_EMMC            66
+#define SRST_A_EMMC            67
+#define SRST_B_EMMC            68
+#define SRST_T_EMMC            69
+#define SRST_P_GPIO1           70
+#define SRST_DB_GPIO1          71
+#define SRST_A_VPU_L_BIU       72
+#define SRST_P_VPU_IOC         73
+#define SRST_H_SAI_I2S0                74
+#define SRST_M_SAI_I2S0                75
+#define SRST_H_SAI_I2S2                76
+#define SRST_M_SAI_I2S2                77
+#define SRST_P_ACODEC          78
+#define SRST_P_GPIO3           79
+#define SRST_DB_GPIO3          80
+#define SRST_P_SPI1            81
+#define SRST_SPI1              82
+#define SRST_P_UART2           83
+#define SRST_S_UART2           84
+#define SRST_P_UART5           85
+#define SRST_S_UART5           86
+#define SRST_P_UART6           87
+#define SRST_S_UART6           88
+#define SRST_P_UART7           89
+#define SRST_S_UART7           90
+#define SRST_P_I2C3            91
+#define SRST_I2C3              92
+#define SRST_P_I2C5            93
+#define SRST_I2C5              94
+#define SRST_P_I2C6            95
+#define SRST_I2C6              96
+#define SRST_A_MAC             97
+#define SRST_P_PCIE            98
+#define SRST_PCIE_PIPE_PHY     99
+#define SRST_PCIE_POWER_UP     100
+#define SRST_P_PCIE_PHY                101
+#define SRST_P_PIPE_GRF                102
+#define SRST_H_SDIO0           103
+#define SRST_H_SDIO1           104
+#define SRST_TS_0              105
+#define SRST_TS_1              106
+#define SRST_P_CAN2            107
+#define SRST_CAN2              108
+#define SRST_P_CAN3            109
+#define SRST_CAN3              110
+#define SRST_P_SARADC          111
+#define SRST_SARADC            112
+#define SRST_SARADC_PHY                113
+#define SRST_P_TSADC           114
+#define SRST_TSADC             115
+#define SRST_A_USB3OTG         116
+#define SRST_A_GPU_BIU         117
+#define SRST_P_GPU_BIU         118
+#define SRST_A_GPU             119
+#define SRST_REF_PVTPLL_GPU    120
+#define SRST_H_RKVENC_BIU      121
+#define SRST_A_RKVENC_BIU      122
+#define SRST_P_RKVENC_BIU      123
+#define SRST_H_RKVENC          124
+#define SRST_A_RKVENC          125
+#define SRST_CORE_RKVENC       126
+#define SRST_H_SAI_I2S1                127
+#define SRST_M_SAI_I2S1                128
+#define SRST_P_I2C1            129
+#define SRST_I2C1              130
+#define SRST_P_I2C0            131
+#define SRST_I2C0              132
+#define SRST_P_SPI0            133
+#define SRST_SPI0              134
+#define SRST_P_GPIO4           135
+#define SRST_DB_GPIO4          136
+#define SRST_P_RKVENC_IOC      137
+#define SRST_H_SPDIF           138
+#define SRST_M_SPDIF           139
+#define SRST_H_PDM             140
+#define SRST_M_PDM             141
+#define SRST_P_UART1           142
+#define SRST_S_UART1           143
+#define SRST_P_UART3           144
+#define SRST_S_UART3           145
+#define SRST_P_RKVENC_GRF      146
+#define SRST_P_CAN0            147
+#define SRST_CAN0              148
+#define SRST_P_CAN1            149
+#define SRST_CAN1              150
+#define SRST_A_VO_BIU          151
+#define SRST_H_VO_BIU          152
+#define SRST_P_VO_BIU          153
+#define SRST_H_RGA2E           154
+#define SRST_A_RGA2E           155
+#define SRST_CORE_RGA2E                156
+#define SRST_H_VDPP            157
+#define SRST_A_VDPP            158
+#define SRST_CORE_VDPP         159
+#define SRST_P_VO_GRF          160
+#define SRST_P_CRU             161
+#define SRST_A_VOP_BIU         162
+#define SRST_H_VOP             163
+#define SRST_D_VOP0            164
+#define SRST_D_VOP1            165
+#define SRST_A_VOP             166
+#define SRST_P_HDMI            167
+#define SRST_HDMI              168
+#define SRST_P_HDMIPHY         169
+#define SRST_H_HDCP_KEY                170
+#define SRST_A_HDCP            171
+#define SRST_H_HDCP            172
+#define SRST_P_HDCP            173
+#define SRST_H_CVBS            174
+#define SRST_D_CVBS_VOP                175
+#define SRST_D_4X_CVBS_VOP     176
+#define SRST_A_JPEG_DECODER    177
+#define SRST_H_JPEG_DECODER    178
+#define SRST_A_VO_L_BIU                179
+#define SRST_A_MAC_VO          180
+#define SRST_A_JPEG_BIU                181
+#define SRST_H_SAI_I2S3                182
+#define SRST_M_SAI_I2S3                183
+#define SRST_MACPHY            184
+#define SRST_P_VCDCPHY         185
+#define SRST_P_GPIO2           186
+#define SRST_DB_GPIO2          187
+#define SRST_P_VO_IOC          188
+#define SRST_H_SDMMC0          189
+#define SRST_P_OTPC_NS         190
+#define SRST_SBPI_OTPC_NS      191
+#define SRST_USER_OTPC_NS      192
+#define SRST_HDMIHDP0          193
+#define SRST_H_USBHOST         194
+#define SRST_H_USBHOST_ARB     195
+#define SRST_HOST_UTMI         196
+#define SRST_P_UART4           197
+#define SRST_S_UART4           198
+#define SRST_P_I2C4            199
+#define SRST_I2C4              200
+#define SRST_P_I2C7            201
+#define SRST_I2C7              202
+#define SRST_P_USBPHY          203
+#define SRST_USBPHY_POR                204
+#define SRST_USBPHY_OTG                205
+#define SRST_USBPHY_HOST       206
+#define SRST_P_DDRPHY_CRU      207
+#define SRST_H_RKVDEC_BIU      208
+#define SRST_A_RKVDEC_BIU      209
+#define SRST_A_RKVDEC          210
+#define SRST_H_RKVDEC          211
+#define SRST_HEVC_CA_RKVDEC    212
+#define SRST_REF_PVTPLL_RKVDEC 213
+#define SRST_P_DDR_BIU         214
+#define SRST_P_DDRC            215
+#define SRST_P_DDRMON          216
+#define SRST_TIMER_DDRMON      217
+#define SRST_P_MSCH_BIU                218
+#define SRST_P_DDR_GRF         219
+#define SRST_P_DDR_HWLP                220
+#define SRST_P_DDRPHY          221
+#define SRST_MSCH_BIU          222
+#define SRST_A_DDR_UPCTL       223
+#define SRST_DDR_UPCTL         224
+#define SRST_DDRMON            225
+#define SRST_A_DDR_SCRAMBLE    226
+#define SRST_A_SPLIT           227
+#define SRST_DDR_PHY           228
+
+#endif // _DT_BINDINGS_RESET_ROCKCHIP_RK3528_H
diff --git a/include/dt-bindings/reset/rockchip,rk3562-cru.h b/include/dt-bindings/reset/rockchip,rk3562-cru.h
new file mode 100644 (file)
index 0000000..8df9511
--- /dev/null
@@ -0,0 +1,358 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2024-2025 Rockchip Electronics Co. Ltd.
+ *
+ * Author: Elaine Zhang <zhangqing@rock-chips.com>
+ */
+
+#ifndef _DT_BINDINGS_RESET_ROCKCHIP_RK3562_H
+#define _DT_BINDINGS_RESET_ROCKCHIP_RK3562_H
+
+/********Name=SOFTRST_CON01,Offset=0x404********/
+#define SRST_A_TOP_BIU                 0
+#define SRST_A_TOP_VIO_BIU             1
+#define SRST_REF_PVTPLL_LOGIC          2
+/********Name=SOFTRST_CON03,Offset=0x40C********/
+#define SRST_NCOREPORESET0             3
+#define SRST_NCOREPORESET1             4
+#define SRST_NCOREPORESET2             5
+#define SRST_NCOREPORESET3             6
+#define SRST_NCORESET0                 7
+#define SRST_NCORESET1                 8
+#define SRST_NCORESET2                 9
+#define SRST_NCORESET3                 10
+#define SRST_NL2RESET                  11
+/********Name=SOFTRST_CON04,Offset=0x410********/
+#define SRST_DAP                       12
+#define SRST_P_DBG_DAPLITE             13
+#define SRST_REF_PVTPLL_CORE           14
+/********Name=SOFTRST_CON05,Offset=0x414********/
+#define SRST_A_CORE_BIU                        15
+#define SRST_P_CORE_BIU                        16
+#define SRST_H_CORE_BIU                        17
+/********Name=SOFTRST_CON06,Offset=0x418********/
+#define SRST_A_NPU_BIU                 18
+#define SRST_H_NPU_BIU                 19
+#define SRST_A_RKNN                    20
+#define SRST_H_RKNN                    21
+#define SRST_REF_PVTPLL_NPU            22
+/********Name=SOFTRST_CON08,Offset=0x420********/
+#define SRST_A_GPU_BIU                 23
+#define SRST_GPU                       24
+#define SRST_REF_PVTPLL_GPU            25
+#define SRST_GPU_BRG_BIU               26
+/********Name=SOFTRST_CON09,Offset=0x424********/
+#define SRST_RKVENC_CORE               27
+#define SRST_A_VEPU_BIU                        28
+#define SRST_H_VEPU_BIU                        29
+#define SRST_A_RKVENC                  30
+#define SRST_H_RKVENC                  31
+/********Name=SOFTRST_CON10,Offset=0x428********/
+#define SRST_RKVDEC_HEVC_CA            32
+#define SRST_A_VDPU_BIU                        33
+#define SRST_H_VDPU_BIU                        34
+#define SRST_A_RKVDEC                  35
+#define SRST_H_RKVDEC                  36
+/********Name=SOFTRST_CON11,Offset=0x42C********/
+#define SRST_A_VI_BIU                  37
+#define SRST_H_VI_BIU                  38
+#define SRST_P_VI_BIU                  39
+#define SRST_ISP                       40
+#define SRST_A_VICAP                   41
+#define SRST_H_VICAP                   42
+#define SRST_D_VICAP                   43
+#define SRST_I0_VICAP                  44
+#define SRST_I1_VICAP                  45
+#define SRST_I2_VICAP                  46
+#define SRST_I3_VICAP                  47
+/********Name=SOFTRST_CON12,Offset=0x430********/
+#define SRST_P_CSIHOST0                        48
+#define SRST_P_CSIHOST1                        49
+#define SRST_P_CSIHOST2                        50
+#define SRST_P_CSIHOST3                        51
+#define SRST_P_CSIPHY0                 52
+#define SRST_P_CSIPHY1                 53
+/********Name=SOFTRST_CON13,Offset=0x434********/
+#define SRST_A_VO_BIU                  54
+#define SRST_H_VO_BIU                  55
+#define SRST_A_VOP                     56
+#define SRST_H_VOP                     57
+#define SRST_D_VOP                     58
+#define SRST_D_VOP1                    59
+/********Name=SOFTRST_CON14,Offset=0x438********/
+#define SRST_A_RGA_BIU                 60
+#define SRST_H_RGA_BIU                 61
+#define SRST_A_RGA                     62
+#define SRST_H_RGA                     63
+#define SRST_RGA_CORE                  64
+#define SRST_A_JDEC                    65
+#define SRST_H_JDEC                    66
+/********Name=SOFTRST_CON15,Offset=0x43C********/
+#define SRST_B_EBK_BIU                 67
+#define SRST_P_EBK_BIU                 68
+#define SRST_AHB2AXI_EBC               69
+#define SRST_H_EBC                     70
+#define SRST_D_EBC                     71
+#define SRST_H_EINK                    72
+#define SRST_P_EINK                    73
+/********Name=SOFTRST_CON16,Offset=0x440********/
+#define SRST_P_PHP_BIU                 74
+#define SRST_A_PHP_BIU                 75
+#define SRST_P_PCIE20                  76
+#define SRST_PCIE20_POWERUP            77
+#define SRST_USB3OTG                   78
+/********Name=SOFTRST_CON17,Offset=0x444********/
+#define SRST_PIPEPHY                   79
+/********Name=SOFTRST_CON18,Offset=0x448********/
+#define SRST_A_BUS_BIU                 80
+#define SRST_H_BUS_BIU                 81
+#define SRST_P_BUS_BIU                 82
+/********Name=SOFTRST_CON19,Offset=0x44C********/
+#define SRST_P_I2C1                    83
+#define SRST_P_I2C2                    84
+#define SRST_P_I2C3                    85
+#define SRST_P_I2C4                    86
+#define SRST_P_I2C5                    87
+#define SRST_I2C1                      88
+#define SRST_I2C2                      89
+#define SRST_I2C3                      90
+#define SRST_I2C4                      91
+#define SRST_I2C5                      92
+/********Name=SOFTRST_CON20,Offset=0x450********/
+#define SRST_BUS_GPIO3                 93
+#define SRST_BUS_GPIO4                 94
+/********Name=SOFTRST_CON21,Offset=0x454********/
+#define SRST_P_TIMER                   95
+#define SRST_TIMER0                    96
+#define SRST_TIMER1                    97
+#define SRST_TIMER2                    98
+#define SRST_TIMER3                    99
+#define SRST_TIMER4                    100
+#define SRST_TIMER5                    101
+#define SRST_P_STIMER                  102
+#define SRST_STIMER0                   103
+#define SRST_STIMER1                   104
+/********Name=SOFTRST_CON22,Offset=0x458********/
+#define SRST_P_WDTNS                   105
+#define SRST_WDTNS                     106
+#define SRST_P_GRF                     107
+#define SRST_P_SGRF                    108
+#define SRST_P_MAILBOX                 109
+#define SRST_P_INTC                    110
+#define SRST_A_BUS_GIC400              111
+#define SRST_A_BUS_GIC400_DEBUG                112
+/********Name=SOFTRST_CON23,Offset=0x45C********/
+#define SRST_A_BUS_SPINLOCK            113
+#define SRST_A_DCF                     114
+#define SRST_P_DCF                     115
+#define SRST_F_BUS_CM0_CORE            116
+#define SRST_T_BUS_CM0_JTAG            117
+#define SRST_H_ICACHE                  118
+#define SRST_H_DCACHE                  119
+/********Name=SOFTRST_CON24,Offset=0x460********/
+#define SRST_P_TSADC                   120
+#define SRST_TSADC                     121
+#define SRST_TSADCPHY                  122
+#define SRST_P_DFT2APB                 123
+/********Name=SOFTRST_CON25,Offset=0x464********/
+#define SRST_A_GMAC                    124
+#define SRST_P_APB2ASB_VCCIO156                125
+#define SRST_P_DSIPHY                  126
+#define SRST_P_DSITX                   127
+#define SRST_P_CPU_EMA_DET             128
+#define SRST_P_HASH                    129
+#define SRST_P_TOPCRU                  130
+/********Name=SOFTRST_CON26,Offset=0x468********/
+#define SRST_P_ASB2APB_VCCIO156                131
+#define SRST_P_IOC_VCCIO156            132
+#define SRST_P_GPIO3_VCCIO156          133
+#define SRST_P_GPIO4_VCCIO156          134
+#define SRST_P_SARADC_VCCIO156         135
+#define SRST_SARADC_VCCIO156           136
+#define SRST_SARADC_VCCIO156_PHY       137
+/********Name=SOFTRST_CON27,Offset=0x46c********/
+#define SRST_A_MAC100                  138
+
+/********Name=PMU0SOFTRST_CON00,Offset=0x10200********/
+#define SRST_P_PMU0_CRU                        139
+#define SRST_P_PMU0_PMU                        140
+#define SRST_PMU0_PMU                  141
+#define SRST_P_PMU0_HP_TIMER           142
+#define SRST_PMU0_HP_TIMER             143
+#define SRST_PMU0_32K_HP_TIMER         144
+#define SRST_P_PMU0_PVTM               145
+#define SRST_PMU0_PVTM                 146
+#define SRST_P_IOC_PMUIO               147
+#define SRST_P_PMU0_GPIO0              148
+#define SRST_PMU0_GPIO0                        149
+#define SRST_P_PMU0_GRF                        150
+#define SRST_P_PMU0_SGRF               151
+/********Name=PMU0SOFTRST_CON01,Offset=0x10204********/
+#define SRST_DDR_FAIL_SAFE             152
+#define SRST_P_PMU0_SCRKEYGEN          153
+/********Name=PMU0SOFTRST_CON02,Offset=0x10208********/
+#define SRST_P_PMU0_I2C0               154
+#define SRST_PMU0_I2C0                 155
+
+/********Name=PMU1SOFTRST_CON00,Offset=0x18200********/
+#define SRST_P_PMU1_CRU                        156
+#define SRST_H_PMU1_MEM                        157
+#define SRST_H_PMU1_BIU                        158
+#define SRST_P_PMU1_BIU                        159
+#define SRST_P_PMU1_UART0              160
+#define SRST_S_PMU1_UART0              161
+/********Name=PMU1SOFTRST_CON01,Offset=0x18204********/
+#define SRST_P_PMU1_SPI0               162
+#define SRST_PMU1_SPI0                 163
+#define SRST_P_PMU1_PWM0               164
+#define SRST_PMU1_PWM0                 165
+/********Name=PMU1SOFTRST_CON02,Offset=0x18208********/
+#define SRST_F_PMU1_CM0_CORE           166
+#define SRST_T_PMU1_CM0_JTAG           167
+#define SRST_P_PMU1_WDTNS              168
+#define SRST_PMU1_WDTNS                        169
+#define SRST_PMU1_MAILBOX              170
+
+/********Name=DDRSOFTRST_CON00,Offset=0x20200********/
+#define SRST_MSCH_BRG_BIU              171
+#define SRST_P_MSCH_BIU                        172
+#define SRST_P_DDR_HWLP                        173
+#define SRST_P_DDR_PHY                 290
+#define SRST_P_DDR_DFICTL              174
+#define SRST_P_DDR_DMA2DDR             175
+/********Name=DDRSOFTRST_CON01,Offset=0x20204********/
+#define SRST_P_DDR_MON                 176
+#define SRST_TM_DDR_MON                        177
+#define SRST_P_DDR_GRF                 178
+#define SRST_P_DDR_CRU                 179
+#define SRST_P_SUBDDR_CRU              180
+
+/********Name=SUBDDRSOFTRST_CON00,Offset=0x28200********/
+#define SRST_MSCH_BIU                  181
+#define SRST_DDR_PHY                   182
+#define SRST_DDR_DFICTL                        183
+#define SRST_DDR_SCRAMBLE              184
+#define SRST_DDR_MON                   185
+#define SRST_A_DDR_SPLIT               186
+#define SRST_DDR_DMA2DDR               187
+
+/********Name=PERISOFTRST_CON01,Offset=0x30404********/
+#define SRST_A_PERI_BIU                        188
+#define SRST_H_PERI_BIU                        189
+#define SRST_P_PERI_BIU                        190
+#define SRST_P_PERICRU                 191
+/********Name=PERISOFTRST_CON02,Offset=0x30408********/
+#define SRST_H_SAI0_8CH                        192
+#define SRST_M_SAI0_8CH                        193
+#define SRST_H_SAI1_8CH                        194
+#define SRST_M_SAI1_8CH                        195
+#define SRST_H_SAI2_2CH                        196
+#define SRST_M_SAI2_2CH                        197
+/********Name=PERISOFTRST_CON03,Offset=0x3040C********/
+#define SRST_H_DSM                     198
+#define SRST_DSM                       199
+#define SRST_H_PDM                     200
+#define SRST_M_PDM                     201
+#define SRST_H_SPDIF                   202
+#define SRST_M_SPDIF                   203
+/********Name=PERISOFTRST_CON04,Offset=0x30410********/
+#define SRST_H_SDMMC0                  204
+#define SRST_H_SDMMC1                  205
+#define SRST_H_EMMC                    206
+#define SRST_A_EMMC                    207
+#define SRST_C_EMMC                    208
+#define SRST_B_EMMC                    209
+#define SRST_T_EMMC                    210
+#define SRST_S_SFC                     211
+#define SRST_H_SFC                     212
+/********Name=PERISOFTRST_CON05,Offset=0x30414********/
+#define SRST_H_USB2HOST                        213
+#define SRST_H_USB2HOST_ARB            214
+#define SRST_USB2HOST_UTMI             215
+/********Name=PERISOFTRST_CON06,Offset=0x30418********/
+#define SRST_P_SPI1                    216
+#define SRST_SPI1                      217
+#define SRST_P_SPI2                    218
+#define SRST_SPI2                      219
+/********Name=PERISOFTRST_CON07,Offset=0x3041C********/
+#define SRST_P_UART1                   220
+#define SRST_P_UART2                   221
+#define SRST_P_UART3                   222
+#define SRST_P_UART4                   223
+#define SRST_P_UART5                   224
+#define SRST_P_UART6                   225
+#define SRST_P_UART7                   226
+#define SRST_P_UART8                   227
+#define SRST_P_UART9                   228
+#define SRST_S_UART1                   229
+#define SRST_S_UART2                   230
+/********Name=PERISOFTRST_CON08,Offset=0x30420********/
+#define SRST_S_UART3                   231
+#define SRST_S_UART4                   232
+#define SRST_S_UART5                   233
+#define SRST_S_UART6                   234
+#define SRST_S_UART7                   235
+/********Name=PERISOFTRST_CON09,Offset=0x30424********/
+#define SRST_S_UART8                   236
+#define SRST_S_UART9                   237
+/********Name=PERISOFTRST_CON10,Offset=0x30428********/
+#define SRST_P_PWM1_PERI               238
+#define SRST_PWM1_PERI                 239
+#define SRST_P_PWM2_PERI               240
+#define SRST_PWM2_PERI                 241
+#define SRST_P_PWM3_PERI               242
+#define SRST_PWM3_PERI                 243
+/********Name=PERISOFTRST_CON11,Offset=0x3042C********/
+#define SRST_P_CAN0                    244
+#define SRST_CAN0                      245
+#define SRST_P_CAN1                    246
+#define SRST_CAN1                      247
+/********Name=PERISOFTRST_CON12,Offset=0x30430********/
+#define SRST_A_CRYPTO                  248
+#define SRST_H_CRYPTO                  249
+#define SRST_P_CRYPTO                  250
+#define SRST_CORE_CRYPTO               251
+#define SRST_PKA_CRYPTO                        252
+#define SRST_H_KLAD                    253
+#define SRST_P_KEY_READER              254
+#define SRST_H_RK_RNG_NS               255
+#define SRST_H_RK_RNG_S                        256
+#define SRST_H_TRNG_NS                 257
+#define SRST_H_TRNG_S                  258
+#define SRST_H_CRYPTO_S                        259
+/********Name=PERISOFTRST_CON13,Offset=0x30434********/
+#define SRST_P_PERI_WDT                        260
+#define SRST_T_PERI_WDT                        261
+#define SRST_A_SYSMEM                  262
+#define SRST_H_BOOTROM                 263
+#define SRST_P_PERI_GRF                        264
+#define SRST_A_DMAC                    265
+#define SRST_A_RKDMAC                  267
+/********Name=PERISOFTRST_CON14,Offset=0x30438********/
+#define SRST_P_OTPC_NS                 268
+#define SRST_SBPI_OTPC_NS              269
+#define SRST_USER_OTPC_NS              270
+#define SRST_P_OTPC_S                  271
+#define SRST_SBPI_OTPC_S               272
+#define SRST_USER_OTPC_S               273
+#define SRST_OTPC_ARB                  274
+#define SRST_P_OTPPHY                  275
+#define SRST_OTP_NPOR                  276
+/********Name=PERISOFTRST_CON15,Offset=0x3043C********/
+#define SRST_P_USB2PHY                 277
+#define SRST_USB2PHY_POR               278
+#define SRST_USB2PHY_OTG               279
+#define SRST_USB2PHY_HOST              280
+#define SRST_P_PIPEPHY                 281
+/********Name=PERISOFTRST_CON16,Offset=0x30440********/
+#define SRST_P_SARADC                  282
+#define SRST_SARADC                    283
+#define SRST_SARADC_PHY                        284
+#define SRST_P_IOC_VCCIO234            285
+/********Name=PERISOFTRST_CON17,Offset=0x30444********/
+#define SRST_P_PERI_GPIO1              286
+#define SRST_P_PERI_GPIO2              287
+#define SRST_PERI_GPIO1                        288
+#define SRST_PERI_GPIO2                        289
+
+#endif
index e2fe4bd..878beae 100644 (file)
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
 /*
- * Copyright (c) 2021 Rockchip Electronics Co. Ltd.
+ * Copyright (c) 2021, 2024 Rockchip Electronics Co. Ltd.
  * Copyright (c) 2022 Collabora Ltd.
  *
  * Author: Elaine Zhang <zhangqing@rock-chips.com>
 
 #define SRST_A_HDMIRX_BIU              660
 
+/* SCMI Secure Resets */
+
+/* Name=SECURE_SOFTRST_CON00,Offset=0xA00 */
+#define SCMI_SRST_A_SECURE_NS_BIU      10
+#define SCMI_SRST_H_SECURE_NS_BIU      11
+#define SCMI_SRST_A_SECURE_S_BIU       12
+#define SCMI_SRST_H_SECURE_S_BIU       13
+#define SCMI_SRST_P_SECURE_S_BIU       14
+#define SCMI_SRST_CRYPTO_CORE          15
+/* Name=SECURE_SOFTRST_CON01,Offset=0xA04 */
+#define SCMI_SRST_CRYPTO_PKA           16
+#define SCMI_SRST_CRYPTO_RNG           17
+#define SCMI_SRST_A_CRYPTO             18
+#define SCMI_SRST_H_CRYPTO             19
+#define SCMI_SRST_KEYLADDER_CORE       25
+#define SCMI_SRST_KEYLADDER_RNG                26
+#define SCMI_SRST_A_KEYLADDER          27
+#define SCMI_SRST_H_KEYLADDER          28
+#define SCMI_SRST_P_OTPC_S             29
+#define SCMI_SRST_OTPC_S               30
+#define SCMI_SRST_WDT_S                        31
+/* Name=SECURE_SOFTRST_CON02,Offset=0xA08 */
+#define SCMI_SRST_T_WDT_S              32
+#define SCMI_SRST_H_BOOTROM            33
+#define SCMI_SRST_A_DCF                        34
+#define SCMI_SRST_P_DCF                        35
+#define SCMI_SRST_H_BOOTROM_NS         37
+#define SCMI_SRST_P_KEYLADDER          46
+#define SCMI_SRST_H_TRNG_S             47
+/* Name=SECURE_SOFTRST_CON03,Offset=0xA0C */
+#define SCMI_SRST_H_TRNG_NS            48
+#define SCMI_SRST_D_SDMMC_BUFFER       49
+#define SCMI_SRST_H_SDMMC              50
+#define SCMI_SRST_H_SDMMC_BUFFER       51
+#define SCMI_SRST_SDMMC                        52
+#define SCMI_SRST_P_TRNG_CHK           53
+#define SCMI_SRST_TRNG_S               54
+
+
 #endif
index ed177c0..81b1eba 100644 (file)
@@ -67,5 +67,7 @@
 #define RST_BUS_HDCP           58
 #define RST_BUS_KEYADC         59
 #define RST_BUS_GPADC          60
+#define RST_BUS_TCON_LCD0      61
+#define RST_BUS_TCON_LCD1      62
 
 #endif /* _DT_BINDINGS_RESET_SUN50I_H616_H_ */
diff --git a/include/dt-bindings/reset/sun55i-a523-ccu.h b/include/dt-bindings/reset/sun55i-a523-ccu.h
new file mode 100644 (file)
index 0000000..70df503
--- /dev/null
@@ -0,0 +1,88 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/*
+ * Copyright (c) 2024 Arm Ltd.
+ */
+
+#ifndef _DT_BINDINGS_RST_SUN55I_A523_CCU_H_
+#define _DT_BINDINGS_RST_SUN55I_A523_CCU_H_
+
+#define RST_MBUS               0
+#define RST_BUS_NSI            1
+#define RST_BUS_DE             2
+#define RST_BUS_DI             3
+#define RST_BUS_G2D            4
+#define RST_BUS_SYS            5
+#define RST_BUS_GPU            6
+#define RST_BUS_CE             7
+#define RST_BUS_SYS_CE         8
+#define RST_BUS_VE             9
+#define RST_BUS_DMA            10
+#define RST_BUS_MSGBOX         11
+#define RST_BUS_SPINLOCK       12
+#define RST_BUS_CPUXTIMER      13
+#define RST_BUS_DBG            14
+#define RST_BUS_PWM0           15
+#define RST_BUS_PWM1           16
+#define RST_BUS_DRAM           17
+#define RST_BUS_NAND           18
+#define RST_BUS_MMC0           19
+#define RST_BUS_MMC1           20
+#define RST_BUS_MMC2           21
+#define RST_BUS_SYSDAP         22
+#define RST_BUS_UART0          23
+#define RST_BUS_UART1          24
+#define RST_BUS_UART2          25
+#define RST_BUS_UART3          26
+#define RST_BUS_UART4          27
+#define RST_BUS_UART5          28
+#define RST_BUS_UART6          29
+#define RST_BUS_UART7          30
+#define RST_BUS_I2C0           31
+#define RST_BUS_I2C1           32
+#define RST_BUS_I2C2           33
+#define RST_BUS_I2C3           34
+#define RST_BUS_I2C4           35
+#define RST_BUS_I2C5           36
+#define RST_BUS_CAN            37
+#define RST_BUS_SPI0           38
+#define RST_BUS_SPI1           39
+#define RST_BUS_SPI2           40
+#define RST_BUS_SPIFC          41
+#define RST_BUS_EMAC0          42
+#define RST_BUS_EMAC1          43
+#define RST_BUS_IR_RX          44
+#define RST_BUS_IR_TX          45
+#define RST_BUS_GPADC0         46
+#define RST_BUS_GPADC1         47
+#define RST_BUS_THS            48
+#define RST_USB_PHY0           49
+#define RST_USB_PHY1           50
+#define RST_BUS_OHCI0          51
+#define RST_BUS_OHCI1          52
+#define RST_BUS_EHCI0          53
+#define RST_BUS_EHCI1          54
+#define RST_BUS_OTG            55
+#define RST_BUS_3              56
+#define RST_BUS_LRADC          57
+#define RST_BUS_PCIE_USB3      58
+#define RST_BUS_DISPLAY0_TOP   59
+#define RST_BUS_DISPLAY1_TOP   60
+#define RST_BUS_HDMI_MAIN      61
+#define RST_BUS_HDMI_SUB       62
+#define RST_BUS_MIPI_DSI0      63
+#define RST_BUS_MIPI_DSI1      64
+#define RST_BUS_TCON_LCD0      65
+#define RST_BUS_TCON_LCD1      66
+#define RST_BUS_TCON_LCD2      67
+#define RST_BUS_TCON_TV0       68
+#define RST_BUS_TCON_TV1       69
+#define RST_BUS_LVDS0          70
+#define RST_BUS_LVDS1          71
+#define RST_BUS_EDP            72
+#define RST_BUS_VIDEO_OUT0     73
+#define RST_BUS_VIDEO_OUT1     74
+#define RST_BUS_LEDC           75
+#define RST_BUS_CSI            76
+#define RST_BUS_ISP            77
+
+#endif /* _DT_BINDINGS_RST_SUN55I_A523_CCU_H_ */
diff --git a/include/dt-bindings/reset/sun55i-a523-r-ccu.h b/include/dt-bindings/reset/sun55i-a523-r-ccu.h
new file mode 100644 (file)
index 0000000..dd6fbb3
--- /dev/null
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/*
+ * Copyright (C) 2024 Arm Ltd.
+ */
+
+#ifndef _DT_BINDINGS_RST_SUN55I_A523_R_CCU_H_
+#define _DT_BINDINGS_RST_SUN55I_A523_R_CCU_H_
+
+#define RST_BUS_R_TIMER                0
+#define RST_BUS_R_TWD          1
+#define RST_BUS_R_PWMCTRL      2
+#define RST_BUS_R_SPI          3
+#define RST_BUS_R_SPINLOCK     4
+#define RST_BUS_R_MSGBOX       5
+#define RST_BUS_R_UART0                6
+#define RST_BUS_R_UART1                7
+#define RST_BUS_R_I2C0         8
+#define RST_BUS_R_I2C1         9
+#define RST_BUS_R_I2C2         10
+#define RST_BUS_R_PPU1         11
+#define RST_BUS_R_IR_RX                12
+#define RST_BUS_R_RTC          13
+#define RST_BUS_R_CPUCFG       14
+
+#endif /* _DT_BINDINGS_RST_SUN55I_A523_R_CCU_H_ */
index a01af16..b46de21 100644 (file)
@@ -9,9 +9,18 @@
 #ifndef __DT_BINDINGS_SAMSUNG_EXYNOS_USI_H
 #define __DT_BINDINGS_SAMSUNG_EXYNOS_USI_H
 
-#define USI_V2_NONE            0
-#define USI_V2_UART            1
-#define USI_V2_SPI             2
-#define USI_V2_I2C             3
+#define USI_MODE_NONE          0
+#define USI_MODE_UART          1
+#define USI_MODE_SPI           2
+#define USI_MODE_I2C           3
+#define USI_MODE_I2C1          4
+#define USI_MODE_I2C0_1                5
+#define USI_MODE_UART_I2C1     6
+
+/* Deprecated */
+#define USI_V2_NONE            USI_MODE_NONE
+#define USI_V2_UART            USI_MODE_UART
+#define USI_V2_SPI             USI_MODE_SPI
+#define USI_V2_I2C             USI_MODE_I2C
 
 #endif /* __DT_BINDINGS_SAMSUNG_EXYNOS_USI_H */
diff --git a/include/dt-bindings/sound/qcom,wcd934x.h b/include/dt-bindings/sound/qcom,wcd934x.h
new file mode 100644 (file)
index 0000000..8b30d34
--- /dev/null
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+
+#ifndef __DT_SOUND_QCOM_WCD934x_H
+#define __DT_SOUND_QCOM_WCD934x_H
+
+#define AIF1_PB                 0
+#define AIF1_CAP                1
+#define AIF2_PB                 2
+#define AIF2_CAP                3
+#define AIF3_PB                 4
+#define AIF3_CAP                5
+#define AIF4_PB                 6
+#define AIF4_VIFEED             7
+#define AIF4_MAD_TX             8
+
+#endif
diff --git a/src/arm/allwinner/sun8i-v3s-netcube-kumquat.dts b/src/arm/allwinner/sun8i-v3s-netcube-kumquat.dts
new file mode 100644 (file)
index 0000000..5143cb4
--- /dev/null
@@ -0,0 +1,276 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 Lukas Schmid <lukas.schmid@netcube.li>
+ */
+
+/dts-v1/;
+#include "sun8i-v3s.dtsi"
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/{
+       model = "NetCube Systems Kumquat";
+       compatible = "netcube,kumquat", "allwinner,sun8i-v3s";
+
+       aliases {
+               serial0 = &uart0;
+               ethernet0 = &emac;
+               rtc0 = &ds3232;
+               rtc1 = &rtc; /* not battery backed */
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       /* 40 MHz Crystal Oscillator on PCB */
+       clk_can0: clock-can0 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency  = <40000000>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               autorepeat;
+
+               key-user {
+                       label = "GPIO Key User";
+                       linux,code = <KEY_PROG1>;
+                       gpios = <&pio 1 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PB2 */
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-heartbeat {
+                       gpios = <&pio 4 4 GPIO_ACTIVE_HIGH>; /* PE4 */
+                       linux,default-trigger = "heartbeat";
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_HEARTBEAT;
+               };
+
+               led-mmc0-act {
+                       gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */
+                       linux,default-trigger = "mmc0";
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DISK;
+               };
+       };
+
+       /* EA3036C Switching 3 Channel Regulator - Channel 2 */
+       reg_vcc3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&reg_vcc5v0>;
+       };
+
+       /* K7805-1000R3 Switching Regulator supplied from main 12/24V terminal block */
+       reg_vcc5v0: regulator-5v0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+};
+
+&codec {
+       allwinner,audio-routing =
+               "Headphone", "HP",
+               "Headphone", "HPCOM",
+               "MIC1", "Mic",
+               "Mic", "HBIAS";
+       status = "okay";
+};
+
+&ehci {
+       status = "okay";
+};
+
+&emac {
+       allwinner,leds-active-low;
+       nvmem-cells = <&eth0_macaddress>;
+       nvmem-cell-names = "mac-address";
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       eeprom0: eeprom@50 {
+               compatible = "atmel,24c02";             /* actually it's a 24AA02E48 */
+               reg = <0x50>;
+               pagesize = <16>;
+               read-only;
+               vcc-supply = <&reg_vcc3v3>;
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               eth0_macaddress: macaddress@fa {
+                       reg = <0xfa 0x06>;
+               };
+       };
+
+       tusb320: typec@60 {
+               compatible = "ti,tusb320";
+               reg = <0x60>;
+               interrupts-extended = <&pio 1 5 IRQ_TYPE_LEVEL_LOW>;  /* PB5 */
+       };
+
+       ds3232: rtc@68 {
+               compatible = "dallas,ds3232";
+               reg = <0x68>;
+       };
+};
+
+/* Exposed as the Flash/SD Header on the board */
+&mmc0 {
+       vmmc-supply = <&reg_vcc3v3>;
+       bus-width = <4>;
+       broken-cd;
+       status = "okay";
+};
+
+/* Connected to the on-board ESP32 */
+&mmc1 {
+       vmmc-supply = <&reg_vcc3v3>;
+       bus-width = <4>;
+       broken-cd;
+       status = "okay";
+};
+
+&ohci {
+       status = "okay";
+};
+
+/* Disable external 32k osc as it is broken on current revision */
+&osc32k {
+       status = "disabled";
+};
+
+&pio {
+       vcc-pb-supply = <&reg_vcc3v3>;
+       vcc-pc-supply = <&reg_vcc3v3>;
+       vcc-pe-supply = <&reg_vcc3v3>;
+       vcc-pf-supply = <&reg_vcc3v3>;
+       vcc-pg-supply = <&reg_vcc3v3>;
+
+       gpio-line-names = "", "", "", "", // PA
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "CAN_nCS", "CAN_nINT", "USER_SW", "PB3", // PB
+                         "USB_ID", "USBC_nINT", "I2C0_SCL", "I2C0_SDA",
+                         "UART0_TX", "UART0_RX", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "SPI_MISO", "SPI_SCK", "FLASH_nCS", "SPI_MOSI", // PC
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "", // PD
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "Q12", "Q11", "Q10", "Q9", // PE
+                         "LED_SYS0", "I1", "Q1", "Q2",
+                         "I2", "I3", "Q3", "Q4",
+                         "I4", "I5", "Q5", "Q6",
+                         "I6", "I7", "Q7", "Q8",
+                         "I8", "UART1_TXD", "UART1_RXD", "ESP_nRST",
+                         "ESP_nBOOT", "", "", "",
+                         "", "", "", "",
+                         "SD_D1", "SD_D0", "SD_CLK", "SD_CMD", // PF
+                         "SD_D3", "SD_D2", "LED_SYS1", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "ESP_CLK", "ESP_CMD", "ESP_D0", "ESP_D1", // PG
+                         "ESP_D2", "ESP_D3", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "";
+};
+
+/* Disable external 32k osc as it is broken on current revision */
+&rtc {
+       /delete-property/ clocks;
+};
+
+/* Exposed as a USB-C connector with USB-Serial converter */
+&uart0 {
+       pinctrl-0 = <&uart0_pb_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+/* Connected to the Bootloader/Console of the ESP32 */
+&uart1 {
+       pinctrl-0 = <&uart1_pe_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&usb_otg {
+       extcon = <&tusb320 0>;
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usbphy {
+       usb0_id_det-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */
+       status = "okay";
+};
+
+&spi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       cs-gpios = <0>, <&pio 1 0 GPIO_ACTIVE_LOW>; /* PB0 */
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               label = "firmware";
+               spi-max-frequency = <40000000>;
+       };
+
+       can@1 {
+               compatible = "microchip,mcp2518fd";
+               reg = <1>;
+               clocks = <&clk_can0>;
+               interrupts-extended = <&pio 1 1 IRQ_TYPE_LEVEL_LOW>;  /* PB1 */
+               spi-max-frequency = <20000000>;
+               vdd-supply = <&reg_vcc3v3>;
+               xceiver-supply = <&reg_vcc3v3>;
+       };
+};
index 9e13c2a..f909b1d 100644 (file)
                                function = "uart0";
                        };
 
+                       /omit-if-no-ref/
+                       uart1_pe_pins: uart1-pe-pins {
+                               pins = "PE21", "PE22";
+                               function = "uart1";
+                       };
+
                        uart2_pins: uart2-pins {
                                pins = "PB0", "PB1";
                                function = "uart2";
index 9ff142d..f785e0d 100644 (file)
        };
 
        pwm_ef: pwm@86c0 {
-               compatible = "amlogic,meson8-pwm", "amlogic,meson8b-pwm";
+               compatible = "amlogic,meson8-pwm-v2";
+               clocks = <&xtal>,
+                        <0>, /* unknown/untested, the datasheet calls it "Video PLL" */
+                        <&clkc CLKID_FCLK_DIV4>,
+                        <&clkc CLKID_FCLK_DIV3>;
                reg = <0x86c0 0x10>;
                #pwm-cells = <3>;
                status = "disabled";
 };
 
 &pwm_ab {
-       compatible = "amlogic,meson8-pwm", "amlogic,meson8b-pwm";
+       compatible = "amlogic,meson8-pwm-v2";
+       clocks = <&xtal>,
+                <0>, /* unknown/untested, the datasheet calls it "Video PLL" */
+                <&clkc CLKID_FCLK_DIV4>,
+                <&clkc CLKID_FCLK_DIV3>;
 };
 
 &pwm_cd {
-       compatible = "amlogic,meson8-pwm", "amlogic,meson8b-pwm";
+       compatible = "amlogic,meson8-pwm-v2";
+       clocks = <&xtal>,
+                <0>, /* unknown/untested, the datasheet calls it "Video PLL" */
+                <&clkc CLKID_FCLK_DIV4>,
+                <&clkc CLKID_FCLK_DIV3>;
 };
 
 &rtc {
index 18ea659..2369995 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>, <&xtal>;
-       clock-names = "clkin0", "clkin1";
 };
 
 &rtc {
index fb28cb3..0bca0b3 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>, <&xtal>;
-       clock-names = "clkin0", "clkin1";
 };
 
 &uart_AO {
index 2aa012f..1cd2093 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>, <&xtal>;
-       clock-names = "clkin0", "clkin1";
 };
 
 &rtc {
index 9e02a97..fdb0abe 100644 (file)
        };
 
        pwm_ef: pwm@86c0 {
-               compatible = "amlogic,meson8b-pwm";
+               compatible = "amlogic,meson8b-pwm-v2", "amlogic,meson8-pwm-v2";
                reg = <0x86c0 0x10>;
+               clocks = <&xtal>,
+                        <0>, /* unknown/untested, the datasheet calls it "Video PLL" */
+                        <&clkc CLKID_FCLK_DIV4>,
+                        <&clkc CLKID_FCLK_DIV3>;
                #pwm-cells = <3>;
                status = "disabled";
        };
 };
 
 &pwm_ab {
-       compatible = "amlogic,meson8b-pwm";
+       compatible = "amlogic,meson8b-pwm-v2", "amlogic,meson8-pwm-v2";
+       clocks = <&xtal>,
+                <0>, /* unknown/untested, the datasheet calls it "Video PLL" */
+                <&clkc CLKID_FCLK_DIV4>,
+                <&clkc CLKID_FCLK_DIV3>;
 };
 
 &pwm_cd {
-       compatible = "amlogic,meson8b-pwm";
+       compatible = "amlogic,meson8b-pwm-v2", "amlogic,meson8-pwm-v2";
+       clocks = <&xtal>,
+                <0>, /* unknown/untested, the datasheet calls it "Video PLL" */
+                <&clkc CLKID_FCLK_DIV4>,
+                <&clkc CLKID_FCLK_DIV3>;
 };
 
 &rtc {
index 808cd57..adc7424 100644 (file)
@@ -88,7 +88,7 @@
 };
 
 &portd {
-       lcden {
+       lcden-hog {
                gpio-hog;
                gpios = <2 GPIO_ACTIVE_HIGH>;
                output-high;
index 19d56e9..a351a97 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "intel-ixp42x.dtsi"
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
 
 / {
        model = "Netgear WG302 v1";
                serial0 = &uart1;
        };
 
+       leds {
+               compatible = "gpio-leds";
+               test_led: led-test {
+                       color = <LED_COLOR_ID_AMBER>;
+                       function = "test";
+                       gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+               wlan_led: led-wlan {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_WLAN;
+                       gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+                       linux,default-trigger = "phy0tx";
+               };
+       };
+
+       gpio_keys {
+               /* RESET is on GPIO13 which can't fire interrupts */
+               compatible = "gpio-keys-polled";
+               poll-interval = <100>;
+
+               button-reset {
+                       linux,code = <KEY_RESTART>;
+                       label = "reset";
+                       gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
+               };
+       };
+
        soc {
                bus@c4000000 {
                        flash@0,0 {
@@ -57,7 +87,7 @@
                        status = "okay";
 
                        /*
-                        * Taken from WG302 v2 PCI boardfile (wg302v2-pci.c)
+                        * Taken from WG302 v1 PCI boardfile (wg302v1-pci.c)
                         * We have slots (IDSEL) 1 and 2 with one assigned IRQ
                         * each handling all IRQs.
                         */
                        <0x0800 0 0 3 &gpio0 8 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 1 is irq 8 */
                        <0x0800 0 0 4 &gpio0 8 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 1 is irq 8 */
                        /* IDSEL 2 */
-                       <0x1000 0 0 1 &gpio0 9 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 9 */
-                       <0x1000 0 0 2 &gpio0 9 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 2 is irq 9 */
-                       <0x1000 0 0 3 &gpio0 9 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 2 is irq 9 */
-                       <0x1000 0 0 4 &gpio0 9 IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 2 is irq 9 */
+                       <0x1000 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 10 */
+                       <0x1000 0 0 2 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 2 is irq 10 */
+                       <0x1000 0 0 3 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 2 is irq 10 */
+                       <0x1000 0 0 4 &gpio0 10 IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 2 is irq 10 */
                };
 
                ethernet@c8009000 {
index 51a716c..0adecca 100644 (file)
                        compatible = "intel,ixp4xx-ethernet";
                        reg = <0xc800c000 0x1000>;
                        status = "disabled";
-                       intel,npe = <0>;
                        /* Dummy values that depend on firmware */
                        queue-rx = <&qmgr 0>;
                        queue-txready = <&qmgr 0>;
+                       intel,npe-handle = <&npe 0>;
                };
        };
 };
index 8208c6a..7aa71a9 100644 (file)
        pinctrl-0 = <&cf_gtr_fan_pwm &cf_gtr_wifi_disable_pins>;
        pinctrl-names = "default";
 
-       wifi-disable {
+       wifi-disable-hog {
                gpio-hog;
                gpios = <30 GPIO_ACTIVE_LOW>, <31 GPIO_ACTIVE_LOW>;
                output-low;
        pinctrl-0 = <&cf_gtr_isolation_pins &cf_gtr_poe_reset_pins &cf_gtr_lte_disable_pins>;
        pinctrl-names = "default";
 
-       lte-disable {
+       lte-disable-hog {
                gpio-hog;
                gpios = <2 GPIO_ACTIVE_LOW>;
                output-low;
         * This signal, when asserted, isolates Armada 38x sample at reset pins
         * from control of external devices. Should be de-asserted after reset.
         */
-       sar-isolation {
+       sar-isolation-hog {
                gpio-hog;
                gpios = <15 GPIO_ACTIVE_LOW>;
                output-low;
                line-name = "sar-isolation";
        };
 
-       poe-reset {
+       poe-reset-hog {
                gpio-hog;
                gpios = <16 GPIO_ACTIVE_LOW>;
                output-low;
index f7daa3b..cf32ba9 100644 (file)
@@ -34,7 +34,7 @@
 };
 
 &gpio0 {
-       phy1_reset {
+       phy1-reset-hog {
                gpio-hog;
                gpios = <19 GPIO_ACTIVE_LOW>;
                output-low;
index 47f03c6..9d7cff4 100644 (file)
@@ -53,7 +53,7 @@
                        cd-gpios = <&gpio0 29 9>;
                };
                gpio@10100 {
-                       p28 {
+                       p28-hog {
                                gpio-hog;
                                gpios = <28 GPIO_ACTIVE_HIGH>;
                                /*
@@ -71,7 +71,7 @@
                        };
                };
                gpio@10140 {
-                       p2 {
+                       p2-hog {
                                gpio-hog;
                                gpios = <2 GPIO_ACTIVE_HIGH>;
                                /*
index b65f80e..302cb87 100644 (file)
@@ -56,7 +56,7 @@
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 7f52762..c11f4f7 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        atmel,vbus-gpio = <&pioB 15 GPIO_ACTIVE_LOW>;
                        status = "okay";
index 9dfd5de..8e9e876 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 5ccb3c1..892dbd8 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 2fb51b9..49dc1a4 100644 (file)
                        status = "okay";
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        status = "okay";
                };
 
index f3ffb8f..45edf62 100644 (file)
@@ -37,7 +37,7 @@
                        status = "okay";
                };
 
-               usb1: ohci@400000 {
+               usb1: usb@400000 {
                        num-ports = <3>;
                        atmel,vbus-gpio = <0 /* &pioA PIN_PD20 GPIO_ACTIVE_HIGH */
                                           &pioA PIN_PA27 GPIO_ACTIVE_HIGH
@@ -48,7 +48,7 @@
                        status = "okay";
                };
 
-               usb2: ehci@500000 {
+               usb2: usb@500000 {
                        status = "okay";
                };
 
index e4ae60e..10d69f6 100644 (file)
@@ -47,7 +47,7 @@
                        status = "okay";
                };
 
-               usb1: ohci@400000 {
+               usb1: usb@400000 {
                        num-ports = <3>;
                        atmel,vbus-gpio = <0
                                           &pioA PIN_PB12 GPIO_ACTIVE_HIGH
@@ -58,7 +58,7 @@
                        status = "okay";
                };
 
-               usb2: ehci@500000 {
+               usb2: usb@500000 {
                        status = "okay";
                };
 
index 4bab3f2..7e77a55 100644 (file)
@@ -46,7 +46,7 @@
                        status = "okay";
                };
 
-               usb1: ohci@400000 {
+               usb1: usb@400000 {
                        num-ports = <3>;
                        atmel,vbus-gpio = <0 /* &pioA PIN_PB9 GPIO_ACTIVE_HIGH */
                                           &pioA PIN_PB10 GPIO_ACTIVE_HIGH
@@ -57,7 +57,7 @@
                        status = "okay";
                };
 
-               usb2: ehci@500000 {
+               usb2: usb@500000 {
                        status = "okay";
                };
 
index 5662992..d2c4395 100644 (file)
                        status = "okay";
                };
 
-               usb1: ohci@600000 {
+               usb1: usb@600000 {
                        num-ports = <3>;
                        atmel,vbus-gpio = <0
                                           &pioE 3 GPIO_ACTIVE_LOW
                        status = "okay";
                };
 
-               usb2: ehci@700000 {
+               usb2: usb@700000 {
                        status = "okay";
                };
 
index 8adf567..b9725e4 100644 (file)
@@ -22,7 +22,7 @@
                        status = "okay";
                };
 
-               usb1: ohci@500000 {
+               usb1: usb@500000 {
                        num-ports = <3>;
                        atmel,vbus-gpio = <0
                                           &pioE 11 GPIO_ACTIVE_LOW
@@ -31,7 +31,7 @@
                        status = "okay";
                };
 
-               usb2: ehci@600000 {
+               usb2: usb@600000 {
                        status = "okay";
                };
 
index 95d701d..0ecccb9 100644 (file)
                        status = "okay";
                };
 
-               usb1: ohci@500000 {
+               usb1: usb@500000 {
                        num-ports = <3>;
                        atmel,vbus-gpio = <0
                                           &pioE 11 GPIO_ACTIVE_HIGH
                        status = "okay";
                };
 
-               usb2: ehci@600000 {
+               usb2: usb@600000 {
                        status = "okay";
                };
 
index 20ac775..69107d6 100644 (file)
                        status = "okay";
                };
 
-               usb1: ohci@500000 {
+               usb1: usb@500000 {
                        num-ports = <3>;
                        atmel,vbus-gpio = <0 /* &pioE 10 GPIO_ACTIVE_LOW */
                                           &pioE 11 GPIO_ACTIVE_LOW
                        status = "okay";
                };
 
-               usb2: ehci@600000 {
+               usb2: usb@600000 {
                        status = "okay";
                };
 
index 0f86360..30fdc4f 100644 (file)
        };
 };
 
+&dma0 {
+       status = "okay";
+};
+
+&dma1 {
+       status = "okay";
+};
+
+&dma2 {
+       status = "okay";
+};
+
 &flx6 {
        atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
        status = "okay";
        status = "okay";
 };
 
+&flx10 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
+       status = "okay";
+};
+
+&i2c10 {
+       dmas = <0>, <0>;
+       i2c-analog-filter;
+       i2c-digital-filter;
+       i2c-digital-filter-width-ns = <35>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c10_default>;
+       status = "okay";
+
+       power-monitor@10 {
+               compatible = "microchip,pac1934";
+               reg = <0x10>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               channel@1 {
+                       reg = <0x1>;
+                       shunt-resistor-micro-ohms = <47000>;
+                       label = "VDD3V3";
+               };
+
+               channel@2 {
+                       reg = <0x2>;
+                       shunt-resistor-micro-ohms = <47000>;
+                       label = "VDDIODDR";
+               };
+
+               channel@3 {
+                       reg = <0x3>;
+                       shunt-resistor-micro-ohms = <47000>;
+                       label = "VDDCORE";
+               };
+
+               channel@4 {
+                       reg = <0x4>;
+                       shunt-resistor-micro-ohms = <47000>;
+                       label = "VDDCPU";
+               };
+       };
+};
+
 &main_xtal {
        clock-frequency = <24000000>;
 };
 
 &pioa {
+       pinctrl_i2c10_default: i2c10-default{
+               pinmux = <PIN_PB19__FLEXCOM10_IO1>,
+                        <PIN_PB20__FLEXCOM10_IO0>;
+               bias-pull-up;
+       };
+
        pinctrl_sdmmc1_default: sdmmc1-default {
                cmd-data {
                        pinmux = <PIN_PB22__SDMMC1_CMD>,
        status = "okay";
 };
 
+&shdwc {
+       debounce-delay-us = <976>;
+       status = "okay";
+
+       input@0 {
+               reg = <0>;
+       };
+};
+
 &slow_xtal {
        clock-frequency = <32768>;
 };
index 0f5e6ad..2543599 100644 (file)
        vref-supply = <&vddout25>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_mikrobus1_an_default &pinctrl_mikrobus2_an_default>;
+       atmel,trigger-edge-type = <IRQ_TYPE_EDGE_RISING>;
        status = "okay";
 };
 
index ecbdacf..c5fc516 100644 (file)
                        status = "disabled";
                };
 
-               usb1: ohci@500000 {
+               usb1: usb@500000 {
                        num-ports = <3>;
                        atmel,vbus-gpio = <0
                                           &pioE 11 GPIO_ACTIVE_LOW
                        status = "disabled";
                };
 
-               usb2: ehci@600000 {
+               usb2: usb@600000 {
                        /* 4G Modem */
                        status = "okay";
                };
index 02a8385..2a4c83d 100644 (file)
                        status = "disabled";
                };
 
-               usb0: ohci@300000 {
+               usb0: usb@300000 {
                        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
                        reg = <0x00300000 0x100000>;
                        interrupts = <23 IRQ_TYPE_LEVEL_HIGH 2>;
index 0bf472b..ce691c4 100644 (file)
@@ -89,7 +89,7 @@
                        };
                };
 
-               usb0: ohci@300000 {
+               usb0: usb@300000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 0038183..ec973f0 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
                        reg = <0x00500000 0x100000>;
                        interrupts = <20 IRQ_TYPE_LEVEL_HIGH 2>;
index e8e65e6..8522a21 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index b57a7fd..0b556c2 100644 (file)
@@ -77,7 +77,7 @@
                #size-cells = <1>;
                ranges;
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
                        reg = <0x00500000 0x100000>;
                        interrupts = <20 IRQ_TYPE_LEVEL_HIGH 2>;
index a8f5231..313bc27 100644 (file)
@@ -31,7 +31,7 @@
        };
 
        ahb {
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        status = "okay";
                };
 
index b95d401..3e9e5ce 100644 (file)
                        status = "disabled";
                };
 
-               usb0: ohci@a00000 {
+               usb0: usb@a00000 {
                        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
                        reg = <0x00a00000 0x100000>;
                        interrupts = <29 IRQ_TYPE_LEVEL_HIGH 2>;
index f256925..471ea25 100644 (file)
                        };
                };
 
-               usb0: ohci@a00000 {
+               usb0: usb@a00000 {
                        num-ports = <2>;
                        status = "okay";
                        atmel,vbus-gpio = <&pioA 24 GPIO_ACTIVE_HIGH
index 4e7cfbb..84a7287 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 157d306..535e26e 100644 (file)
                        status = "disabled";
                };
 
-               usb0: ohci@700000 {
+               usb0: usb@700000 {
                        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
                        reg = <0x00700000 0x100000>;
                        interrupts = <22 IRQ_TYPE_LEVEL_HIGH 2>;
                        status = "disabled";
                };
 
-               usb1: ehci@800000 {
+               usb1: usb@800000 {
                        compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
                        reg = <0x00800000 0x100000>;
                        interrupts = <22 IRQ_TYPE_LEVEL_HIGH 2>;
index 071db4f..2a31b2f 100644 (file)
                        };
                };
 
-               usb0: ohci@700000 {
+               usb0: usb@700000 {
                        status = "okay";
                        num-ports = <2>;
                        atmel,vbus-gpio = <&pioD 1 GPIO_ACTIVE_LOW
                                           &pioD 3 GPIO_ACTIVE_LOW>;
                };
 
-               usb1: ehci@800000 {
+               usb1: usb@800000 {
                        status = "okay";
                };
        };
index 844bd50..2f930c3 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
                        reg = <0x00500000 0x00100000>;
                        interrupts = <22 IRQ_TYPE_LEVEL_HIGH 2>;
index 643c3b2..b06a54e 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <1>;
                        atmel,vbus-gpio = <&pioB 7 GPIO_ACTIVE_LOW>;
                        status = "okay";
index 27c1f28..17bdf1e 100644 (file)
                        };
                };
 
-               usb0: ohci@600000 {
+               usb0: usb@600000 {
                        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
                        reg = <0x00600000 0x100000>;
                        interrupts = <22 IRQ_TYPE_LEVEL_HIGH 2>;
                        status = "disabled";
                };
 
-               usb1: ehci@700000 {
+               usb1: usb@700000 {
                        compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
                        reg = <0x00700000 0x100000>;
                        interrupts = <22 IRQ_TYPE_LEVEL_HIGH 2>;
index ad7a085..52ccef3 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 6d519d0..40c5111 100644 (file)
@@ -45,7 +45,7 @@
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 005c275..2a97e2c 100644 (file)
@@ -57,7 +57,7 @@
                        };
                };
 
-               usb0: ohci@300000 {
+               usb0: usb@300000 {
                        num-ports = <1>;
                        status = "okay";
                };
index c349fd3..2258e62 100644 (file)
                        };
                };
 
-               usb0: ohci@700000 {
+               usb0: usb@700000 {
                        status = "okay";
                        num-ports = <2>;
                };
 
-               usb1: ehci@800000 {
+               usb1: usb@800000 {
                        status = "okay";
                };
        };
index b8b2c1d..b075865 100644 (file)
@@ -88,7 +88,7 @@
                        status = "disabled";
                };
 
-               usb1: ohci@600000 {
+               usb1: usb@600000 {
                        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
                        reg = <0x00600000 0x100000>;
                        interrupts = <22 IRQ_TYPE_LEVEL_HIGH 2>;
@@ -97,7 +97,7 @@
                        status = "disabled";
                };
 
-               usb2: ehci@700000 {
+               usb2: usb@700000 {
                        compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
                        reg = <0x00700000 0x100000>;
                        interrupts = <22 IRQ_TYPE_LEVEL_HIGH 2>;
index 3f99451..dc22fb6 100644 (file)
                        status = "disabled";
                };
 
-               usb1: ohci@400000 {
+               usb1: usb@400000 {
                        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
                        reg = <0x00400000 0x100000>;
                        interrupts = <41 IRQ_TYPE_LEVEL_HIGH 2>;
                        status = "disabled";
                };
 
-               usb2: ehci@500000 {
+               usb2: usb@500000 {
                        compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
                        reg = <0x00500000 0x100000>;
                        interrupts = <41 IRQ_TYPE_LEVEL_HIGH 2>;
index 70f380c..e95799c 100644 (file)
                        status = "disabled";
                };
 
-               usb1: ohci@600000 {
+               usb1: usb@600000 {
                        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
                        reg = <0x00600000 0x100000>;
                        interrupts = <32 IRQ_TYPE_LEVEL_HIGH 2>;
                        status = "disabled";
                };
 
-               usb2: ehci@700000 {
+               usb2: usb@700000 {
                        compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
                        reg = <0x00700000 0x100000>;
                        interrupts = <32 IRQ_TYPE_LEVEL_HIGH 2>;
index 3652c9e..90da04b 100644 (file)
                        status = "okay";
                };
 
-               usb1: ohci@600000 {
+               usb1: usb@600000 {
                        num-ports = <3>;
                        atmel,vbus-gpio = <&pioD 25 GPIO_ACTIVE_HIGH
                                           &pioD 26 GPIO_ACTIVE_LOW
                        status = "okay";
                };
 
-               usb2: ehci@700000 {
+               usb2: usb@700000 {
                        status = "okay";
                };
        };
index 3551326..59a7d55 100644 (file)
                        status = "disabled";
                };
 
-               usb1: ohci@500000 {
+               usb1: usb@500000 {
                        compatible = "atmel,at91rm9200-ohci", "usb-ohci";
                        reg = <0x00500000 0x100000>;
                        interrupts = <46 IRQ_TYPE_LEVEL_HIGH 2>;
                        status = "disabled";
                };
 
-               usb2: ehci@600000 {
+               usb2: usb@600000 {
                        compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
                        reg = <0x00600000 0x100000>;
                        interrupts = <46 IRQ_TYPE_LEVEL_HIGH 2>;
index 854b30d..b6710cc 100644 (file)
@@ -9,6 +9,7 @@
  */
 
 #include <dt-bindings/clock/at91.h>
+#include <dt-bindings/dma/at91.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
                #address-cells = <1>;
                #size-cells = <1>;
 
+               sfrbu: sfr@e0008000 {
+                       compatible ="microchip,sama7d65-sfrbu", "atmel,sama5d2-sfrbu", "syscon";
+                       reg = <0xe0008000 0x20>;
+               };
+
                pioa: pinctrl@e0014000 {
                        compatible = "microchip,sama7d65-pinctrl", "microchip,sama7g5-pinctrl";
                        reg = <0xe0014000 0x800>;
                        clock-names = "td_slck", "md_slck", "main_xtal";
                };
 
+               ps_wdt: watchdog@e001d000 {
+                       compatible = "microchip,sama7d65-wdt", "microchip,sama7g5-wdt";
+                       reg = <0xe001d000 0x30>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk32k 0>;
+               };
+
+               reset_controller: reset-controller@e001d100 {
+                       compatible = "microchip,sama7d65-rstc", "microchip,sama7g5-rstc";
+                       reg = <0xe001d100 0xc>, <0xe001d1e4 0x4>;
+                       #reset-cells = <1>;
+                       clocks = <&clk32k 0>;
+               };
+
+               shdwc: poweroff@e001d200 {
+                       compatible = "microchip,sama7d65-shdwc", "microchip,sama7g5-shdwc", "syscon";
+                       reg = <0xe001d200 0x20>;
+                       clocks = <&clk32k 0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       atmel,wakeup-rtc-timer;
+                       atmel,wakeup-rtt-timer;
+                       status = "disabled";
+               };
+
                clk32k: clock-controller@e001d500 {
                        compatible = "microchip,sama7d65-sckc", "microchip,sam9x60-sckc";
                        reg = <0xe001d500 0x4>;
                        #clock-cells = <1>;
                };
 
+               rtc: rtc@e001d800 {
+                       compatible = "microchip,sama7d65-rtc", "microchip,sam9x60-rtc";
+                       reg = <0xe001d800 0x30>;
+                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk32k 1>;
+               };
+
+               chipid@e0020000 {
+                       compatible = "microchip,sama7d65-chipid";
+                       reg = <0xe0020000 0x8>;
+               };
+
+               dma2: dma-controller@e1200000 {
+                       compatible = "microchip,sama7d65-dma", "microchip,sama7g5-dma";
+                       reg = <0xe1200000 0x1000>;
+                       interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 23>;
+                       clock-names = "dma_clk";
+                       dma-requests = <0>;
+                       status = "disabled";
+               };
+
                sdmmc1: mmc@e1208000 {
                        compatible = "microchip,sama7d65-sdhci", "microchip,sam9x60-sdhci";
                        reg = <0xe1208000 0x400>;
                        status = "disabled";
                };
 
+               dma0: dma-controller@e1610000 {
+                       compatible = "microchip,sama7d65-dma", "microchip,sama7g5-dma";
+                       reg = <0xe1610000 0x1000>;
+                       interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 21>;
+                       clock-names = "dma_clk";
+                       status = "disabled";
+               };
+
+               dma1: dma-controller@e1614000 {
+                       compatible = "microchip,sama7d65-dma", "microchip,sama7g5-dma";
+                       reg = <0xe1614000 0x1000>;
+                       interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 22>;
+                       clock-names = "dma_clk";
+                       status = "disabled";
+               };
+
                pit64b0: timer@e1800000 {
                        compatible = "microchip,sama7d65-pit64b", "microchip,sam9x60-pit64b";
                        reg = <0xe1800000 0x100>;
                        };
                };
 
+               flx10: flexcom@e2824000 {
+                       compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
+                       reg = <0xe2824000 0x200>;
+                       ranges = <0x0 0xe2824000 0x800>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 44>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+
+                       i2c10: i2c@600 {
+                               compatible = "microchip,sama7d65-i2c", "microchip,sam9x60-i2c";
+                               reg = <0x600 0x200>;
+                               interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 44>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               atmel,fifo-size = <32>;
+                               status = "disabled";
+                       };
+               };
+
                gic: interrupt-controller@e8c11000 {
                        compatible = "arm,cortex-a7-gic";
                        reg = <0xe8c11000 0x1000>,
index ef6d586..f0f2a78 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * tny_a9260.dts - Device Tree file for Caloa TNY A9260 board
+ * tny_a9260.dts - Device Tree file for Calao TNY A9260 board
  *
  * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
index 70e5635..4d4377f 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * tny_a9260_common.dtsi - Device Tree file for Caloa TNY A926x board
+ * tny_a9260_common.dtsi - Device Tree file for Calao TNY A926x board
  *
  * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
index 62b7d9f..3dd48b3 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * usb_a9263.dts - Device Tree file for Caloa USB A9293 board
+ * usb_a9263.dts - Device Tree file for Calao USB A9293 board
  *
  *  Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
index 118d766..cebd569 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * tny_a9g20.dts - Device Tree file for Caloa TNY A9G20 board
+ * tny_a9g20.dts - Device Tree file for Calao TNY A9G20 board
  *
  * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
index 66f8da8..e7f7b25 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 /*
- * usb_a9260.dts - Device Tree file for Caloa USB A9260 board
+ * usb_a9260.dts - Device Tree file for Calao USB A9260 board
  *
  *  Copyright (C) 2011-2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
index 8744b5f..8c35306 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 /*
- * usb_a926x.dts - Device Tree file for Caloa USB A926x board
+ * usb_a926x.dts - Device Tree file for Calao USB A926x board
  *
  *  Copyright (C) 2011-2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
 
                user_led {
                        label = "user_led";
-                       gpios = <&pioB 21 GPIO_ACTIVE_LOW>;
-                       linux,default-trigger = "heartbeat";
+                       gpios = <&pioB 21 GPIO_ACTIVE_HIGH>;
                };
        };
 
        gpio_keys {
                compatible = "gpio-keys";
-               #address-cells = <1>;
-               #size-cells = <0>;
 
-               user_pb {
+               button-user-pb {
                        label = "user_pb";
                        gpios = <&pioB 10 GPIO_ACTIVE_LOW>;
                        linux,code = <28>;
index 4574591..60d7936 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * usb_a9263.dts - Device Tree file for Caloa USB A9293 board
+ * usb_a9263.dts - Device Tree file for Calao USB A9293 board
  *
  *  Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
@@ -9,7 +9,7 @@
 
 / {
        model = "Calao USB A9263";
-       compatible = "atmel,usb-a9263", "atmel,at91sam9263", "atmel,at91sam9";
+       compatible = "calao,usb-a9263", "atmel,at91sam9263", "atmel,at91sam9";
 
        chosen {
                bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock5 rw rootfstype=ubifs";
                        };
                };
 
-               usb0: ohci@a00000 {
+               usb0: usb@a00000 {
                        num-ports = <2>;
                        status = "okay";
                };
                user_led {
                        label = "user_led";
                        gpios = <&pioB 21 GPIO_ACTIVE_HIGH>;
-                       linux,default-trigger = "heartbeat";
                };
        };
 
        gpio_keys {
                compatible = "gpio-keys";
-               #address-cells = <1>;
-               #size-cells = <0>;
 
-               user_pb {
+               button-user-pb {
                        label = "user_pb";
                        gpios = <&pioB 10 GPIO_ACTIVE_LOW>;
                        linux,code = <28>;
index 08d5808..5b1d80c 100644 (file)
 
        gpio_keys {
                compatible = "gpio-keys";
-               #address-cells = <1>;
-               #size-cells = <0>;
 
-               user_pb1 {
+               button-user-pb1 {
                        label = "user_pb1";
                        gpios = <&pioB 25 GPIO_ACTIVE_LOW>;
                        linux,code = <0x100>;
                };
 
-               user_pb2 {
+               button-user-pb2 {
                        label = "user_pb2";
                        gpios = <&pioB 13 GPIO_ACTIVE_LOW>;
                        linux,code = <0x101>;
                };
 
-               user_pb3 {
+               button-user-pb3 {
                        label = "user_pb3";
                        gpios = <&pioA 26 GPIO_ACTIVE_LOW>;
                        linux,code = <0x102>;
                };
 
-               user_pb4 {
+               button-user-pb4 {
                        label = "user_pb4";
                        gpios = <&pioC 9 GPIO_ACTIVE_LOW>;
                        linux,code = <0x103>;
index 2f667b0..a2f7481 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 /*
- * usb_a9g20.dts - Device Tree file for Caloa USB A9G20 board
+ * usb_a9g20.dts - Device Tree file for Calao USB A9G20 board
  *
  *  Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
index 7d10b36..f1946e0 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 /*
- * usb_a9g20.dts - Device Tree file for Caloa USB A9G20 board
+ * usb_a9g20.dts - Device Tree file for Calao USB A9G20 board
  *
  *  Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
index f657120..4d10479 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-or-later
 /*
- * usb_a9g20_lpw.dts - Device Tree file for Caloa USB A9G20 Low Power board
+ * usb_a9g20_lpw.dts - Device Tree file for Calao USB A9G20 Low Power board
  *
  *  Copyright (C) 2013 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
@@ -16,7 +16,7 @@
                        spi1: spi@fffcc000 {
                                cs-gpios = <&pioB 3 GPIO_ACTIVE_HIGH>;
                                status = "okay";
-                               mmc-slot@0 {
+                               mmc@0 {
                                        compatible = "mmc-spi-slot";
                                        reg = <0>;
                                        voltage-ranges = <3200 3400>;
index 86f14e2..4caf207 100644 (file)
                        reg = <0x54400000 0x00040000>;
                        clocks = <&tegra_car TEGRA114_CLK_DSIB>,
                                 <&tegra_car TEGRA114_CLK_DSIBLP>,
-                                <&tegra_car TEGRA114_CLK_PLL_D2_OUT0>;
+                                <&tegra_car TEGRA114_CLK_PLL_D_OUT0>;
                        clock-names = "dsi", "lp", "parent";
                        resets = <&tegra_car 82>;
                        reset-names = "dsi";
                #iommu-cells = <1>;
        };
 
+       hda@70030000 {
+               compatible = "nvidia,tegra114-hda", "nvidia,tegra30-hda";
+               reg = <0x70030000 0x10000>;
+               interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&tegra_car TEGRA114_CLK_HDA>,
+                        <&tegra_car TEGRA114_CLK_HDA2HDMI>,
+                        <&tegra_car TEGRA114_CLK_HDA2CODEC_2X>;
+               clock-names = "hda", "hda2hdmi", "hda2codec_2x";
+               resets = <&tegra_car 125>, /* hda */
+                        <&tegra_car 128>, /* hda2hdmi */
+                        <&tegra_car 111>; /* hda2codec_2x */
+               reset-names = "hda", "hda2hdmi", "hda2codec_2x";
+               status = "disabled";
+       };
+
        ahub@70080000 {
                compatible = "nvidia,tegra114-ahub";
                reg = <0x70080000 0x200>,
                #address-cells = <1>;
                #size-cells = <0>;
 
-               cpu@0 {
+               cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
                        reg = <0>;
                };
 
-               cpu@1 {
+               cpu1: cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
                        reg = <1>;
                };
 
-               cpu@2 {
+               cpu2: cpu@2 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
                        reg = <2>;
                };
 
-               cpu@3 {
+               cpu3: cpu@3 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
                        reg = <3>;
                };
        };
 
+       pmu {
+               compatible = "arm,cortex-a15-pmu";
+               interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
+       };
+
        timer {
                compatible = "arm,armv7-timer";
                interrupts =
index 8f1fff3..ec4f0e3 100644 (file)
                        status = "disabled";
                };
 
+               dsia: dsi@54300000 {
+                       compatible = "nvidia,tegra124-dsi";
+                       reg = <0x0 0x54300000 0x0 0x00040000>;
+                       clocks = <&tegra_car TEGRA124_CLK_DSIA>,
+                                <&tegra_car TEGRA124_CLK_DSIALP>,
+                                <&tegra_car TEGRA124_CLK_PLL_D_OUT0>;
+                       clock-names = "dsi", "lp", "parent";
+                       resets = <&tegra_car 48>;
+                       reset-names = "dsi";
+                       nvidia,mipi-calibrate = <&mipi 0x060>; /* DSIA & DSIB pads */
+                       status = "disabled";
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
                vic@54340000 {
                        compatible = "nvidia,tegra124-vic";
                        reg = <0x0 0x54340000 0x0 0x00040000>;
                        iommus = <&mc TEGRA_SWGROUP_VIC>;
                };
 
+               dsib: dsi@54400000 {
+                       compatible = "nvidia,tegra124-dsi";
+                       reg = <0x0 0x54400000 0x0 0x00040000>;
+                       clocks = <&tegra_car TEGRA124_CLK_DSIB>,
+                                <&tegra_car TEGRA124_CLK_DSIBLP>,
+                                <&tegra_car TEGRA124_CLK_PLL_D_OUT0>;
+                       clock-names = "dsi", "lp", "parent";
+                       resets = <&tegra_car 82>;
+                       reset-names = "dsi";
+                       nvidia,mipi-calibrate = <&mipi 0x180>; /* DSIC & DSID pads */
+                       status = "disabled";
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
                sor@54540000 {
                        compatible = "nvidia,tegra124-sor";
                        reg = <0x0 0x54540000 0x0 0x00040000>;
                };
        };
 
+       mipi: mipi@700e3000 {
+               compatible = "nvidia,tegra124-mipi";
+               reg = <0x0 0x700e3000 0x0 0x100>;
+               clocks = <&tegra_car TEGRA124_CLK_MIPI_CAL>;
+               clock-names = "mipi-cal";
+               #nvidia,mipi-calibrate-cells = <1>;
+       };
+
        dfll: clock@70110000 {
                compatible = "nvidia,tegra124-dfll";
                reg = <0 0x70110000 0 0x100>, /* DFLL control */
index e118809..67764af 100644 (file)
                                sbs,poll-retry-count = <10>;
                                power-supplies = <&mains>;
                        };
+
+                       /* Dynaimage ambient light sensor */
+                       light-sensor@1c {
+                               compatible = "dynaimage,al3000a";
+                               reg = <0x1c>;
+
+                               interrupt-parent = <&gpio>;
+                               interrupts = <TEGRA_GPIO(Z, 2) IRQ_TYPE_LEVEL_HIGH>;
+
+                               vdd-supply = <&vdd_1v8_sys>;
+                       };
                };
        };
 
index 00006c9..813a815 100644 (file)
                        #address-cells = <1>;
                        #size-cells = <1>;
 
-                       nfc: nand@b8000000 {
+                       nfc: nand-controller@b8000000 {
                                compatible = "fsl,imx31-nand", "fsl,imx27-nand";
                                reg = <0xb8000000 0x1000>;
                                interrupts = <33>;
index 1b6f444..d76c496 100644 (file)
                        clks: ccm@53fd4000 {
                                compatible = "fsl,imx50-ccm";
                                reg = <0x53fd4000 0x4000>;
-                               interrupts = <0 71 0x04 0 72 0x04>;
+                               interrupts = <71>, <72>;
                                #clock-cells = <1>;
                        };
 
index cc88da4..8323e3a 100644 (file)
                        clks: ccm@73fd4000 {
                                compatible = "fsl,imx51-ccm";
                                reg = <0x73fd4000 0x4000>;
-                               interrupts = <0 71 0x04 0 72 0x04>;
+                               interrupts = <71>, <72>;
                                #clock-cells = <1>;
                        };
                };
index c14eb72..3cdb87a 100644 (file)
        };
 
        expander: pca9554@20 {
-               compatible = "pca9554";
+               compatible = "nxp,pca9554";
                reg = <0x20>;
                interrupts = <109>;
                #gpio-cells = <2>;
index e939acc..2892e45 100644 (file)
 
        touchscreen@4b {
                compatible = "atmel,maxtouch";
-               reset-gpio = <&gpio5 19 GPIO_ACTIVE_LOW>;
+               reset-gpios = <&gpio5 19 GPIO_ACTIVE_LOW>;
                reg = <0x4b>;
                interrupt-parent = <&gpio5>;
                interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
index 845e2bf..faac7cc 100644 (file)
                        clks: ccm@53fd4000 {
                                compatible = "fsl,imx53-ccm";
                                reg = <0x53fd4000 0x4000>;
-                               interrupts = <0 71 0x04 0 72 0x04>;
+                               interrupts = <71>, <72>;
                                #clock-cells = <1>;
                        };
 
diff --git a/src/arm/nxp/imx/imx6dl-colibri-v1.2-aster.dts b/src/arm/nxp/imx/imx6dl-colibri-v1.2-aster.dts
new file mode 100644 (file)
index 0000000..44c78c0
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2025 Toradex */
+
+/dts-v1/;
+
+#include "imx6dl-colibri-aster.dts"
+#include "imx6qdl-colibri-v1.2.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX6DL/S V1.2+ on Colibri Aster Board";
+};
diff --git a/src/arm/nxp/imx/imx6dl-colibri-v1.2-eval-v3.dts b/src/arm/nxp/imx/imx6dl-colibri-v1.2-eval-v3.dts
new file mode 100644 (file)
index 0000000..93fd0af
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2025 Toradex */
+
+/dts-v1/;
+
+#include "imx6dl-colibri-eval-v3.dts"
+#include "imx6qdl-colibri-v1.2.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX6DL/S V1.2+ on Colibri Evaluation Board V3";
+};
diff --git a/src/arm/nxp/imx/imx6dl-colibri-v1.2-iris-v2.dts b/src/arm/nxp/imx/imx6dl-colibri-v1.2-iris-v2.dts
new file mode 100644 (file)
index 0000000..92d41fc
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2025 Toradex */
+
+/dts-v1/;
+
+#include "imx6dl-colibri-iris-v2.dts"
+#include "imx6qdl-colibri-v1.2.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX6DL/S V1.2+ on Colibri Iris V2 Board";
+};
diff --git a/src/arm/nxp/imx/imx6dl-colibri-v1.2-iris.dts b/src/arm/nxp/imx/imx6dl-colibri-v1.2-iris.dts
new file mode 100644 (file)
index 0000000..c895794
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2025 Toradex */
+
+/dts-v1/;
+
+#include "imx6dl-colibri-iris.dts"
+#include "imx6qdl-colibri-v1.2.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX6DL/S V1.2+ on Colibri Iris Board";
+};
diff --git a/src/arm/nxp/imx/imx6q-apalis-v1.2-eval-v1.2.dts b/src/arm/nxp/imx/imx6q-apalis-v1.2-eval-v1.2.dts
new file mode 100644 (file)
index 0000000..908dab5
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2025 Toradex */
+
+/dts-v1/;
+
+#include "imx6q-apalis-eval-v1.2.dts"
+#include "imx6qdl-apalis-v1.2.dtsi"
+
+/ {
+       model = "Toradex Apalis iMX6Q/D Module V1.2+ on Apalis Evaluation Board v1.2";
+};
diff --git a/src/arm/nxp/imx/imx6q-apalis-v1.2-eval.dts b/src/arm/nxp/imx/imx6q-apalis-v1.2-eval.dts
new file mode 100644 (file)
index 0000000..5463d41
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2025 Toradex */
+
+/dts-v1/;
+
+#include "imx6q-apalis-eval.dts"
+#include "imx6qdl-apalis-v1.2.dtsi"
+
+/ {
+       model = "Toradex Apalis iMX6Q/D Module V1.2+ on Apalis Evaluation Board";
+};
diff --git a/src/arm/nxp/imx/imx6q-apalis-v1.2-ixora-v1.1.dts b/src/arm/nxp/imx/imx6q-apalis-v1.2-ixora-v1.1.dts
new file mode 100644 (file)
index 0000000..84eabf8
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2025 Toradex */
+
+/dts-v1/;
+
+#include "imx6q-apalis-ixora-v1.1.dts"
+#include "imx6qdl-apalis-v1.2.dtsi"
+
+/ {
+       model = "Toradex Apalis iMX6Q/D Module V1.2+ on Ixora Carrier Board V1.1";
+};
diff --git a/src/arm/nxp/imx/imx6q-apalis-v1.2-ixora-v1.2.dts b/src/arm/nxp/imx/imx6q-apalis-v1.2-ixora-v1.2.dts
new file mode 100644 (file)
index 0000000..d7cfab4
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2025 Toradex */
+
+/dts-v1/;
+
+#include "imx6q-apalis-ixora-v1.2.dts"
+#include "imx6qdl-apalis-v1.2.dtsi"
+
+/ {
+       model = "Toradex Apalis iMX6Q/D Module V1.2+ on Ixora Carrier Board V1.2";
+};
diff --git a/src/arm/nxp/imx/imx6q-apalis-v1.2-ixora.dts b/src/arm/nxp/imx/imx6q-apalis-v1.2-ixora.dts
new file mode 100644 (file)
index 0000000..189b074
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2025 Toradex */
+
+/dts-v1/;
+
+#include "imx6q-apalis-ixora.dts"
+#include "imx6qdl-apalis-v1.2.dtsi"
+
+/ {
+       model = "Toradex Apalis iMX6Q/D Module V1.2+ on Ixora Carrier Board";
+};
diff --git a/src/arm/nxp/imx/imx6qdl-apalis-v1.2.dtsi b/src/arm/nxp/imx/imx6qdl-apalis-v1.2.dtsi
new file mode 100644 (file)
index 0000000..83fa04f
--- /dev/null
@@ -0,0 +1,57 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2025 Toradex */
+
+&i2c2 {
+       /delete-node/ stmpe811@41;
+
+       ad7879_ts: touchscreen@2c {
+               compatible = "adi,ad7879-1";
+               reg = <0x2c>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_touch_int>;
+               interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-parent = <&gpio4>;
+               touchscreen-max-pressure = <4096>;
+               adi,resistance-plate-x = <120>;
+               adi,first-conversion-delay = /bits/ 8 <3>;
+               adi,acquisition-time = /bits/ 8 <1>;
+               adi,median-filter-size = /bits/ 8 <2>;
+               adi,averaging = /bits/ 8 <1>;
+               adi,conversion-interval = /bits/ 8 <255>;
+       };
+
+       tla2024_adc: adc@49 {
+               compatible = "ti,tla2024";
+               reg = <0x49>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* Apalis AN1_ADC0 */
+               channel@4 {
+                       reg = <4>;
+                       ti,datarate = <4>;
+                       ti,gain = <1>;
+               };
+
+               /* Apalis AN1_ADC1 */
+               channel@5 {
+                       reg = <5>;
+                       ti,datarate = <4>;
+                       ti,gain = <1>;
+               };
+
+               /* Apalis AN1_ADC2 */
+               channel@6 {
+                       reg = <6>;
+                       ti,datarate = <4>;
+                       ti,gain = <1>;
+               };
+
+               /* Apalis AN1_TSWIP_ADC3 */
+               channel@7 {
+                       reg = <7>;
+                       ti,datarate = <4>;
+                       ti,gain = <1>;
+               };
+       };
+};
index 88be291..b13000a 100644 (file)
@@ -10,7 +10,6 @@
 
 / {
        model = "Toradex Apalis iMX6Q/D Module";
-       compatible = "toradex,apalis_imx6q", "fsl,imx6q";
 
        aliases {
                mmc0 = &usdhc3; /* eMMC */
                        st,settling = <3>;
                        /* 5 ms touch detect interrupt delay */
                        st,touch-det-delay = <5>;
-                       status = "disabled";
                };
 
                stmpe_adc: stmpe_adc {
diff --git a/src/arm/nxp/imx/imx6qdl-colibri-v1.2.dtsi b/src/arm/nxp/imx/imx6qdl-colibri-v1.2.dtsi
new file mode 100644 (file)
index 0000000..d11bf91
--- /dev/null
@@ -0,0 +1,57 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2025 Toradex */
+
+&i2c2 {
+       /delete-node/ stmpe811@41;
+
+       ad7879_ts: touchscreen@2c {
+               compatible = "adi,ad7879-1";
+               reg = <0x2c>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_touch_int>;
+               interrupts = <20 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-parent = <&gpio6>;
+               touchscreen-max-pressure = <4096>;
+               adi,resistance-plate-x = <120>;
+               adi,first-conversion-delay = /bits/ 8 <3>;
+               adi,acquisition-time = /bits/ 8 <1>;
+               adi,median-filter-size = /bits/ 8 <2>;
+               adi,averaging = /bits/ 8 <1>;
+               adi,conversion-interval = /bits/ 8 <255>;
+       };
+
+       tla2024_adc: adc@49 {
+               compatible = "ti,tla2024";
+               reg = <0x49>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* Colibri AIN0 */
+               channel@4 {
+                       reg = <4>;
+                       ti,datarate = <4>;
+                       ti,gain = <1>;
+               };
+
+               /* Colibri AIN1 */
+               channel@5 {
+                       reg = <5>;
+                       ti,datarate = <4>;
+                       ti,gain = <1>;
+               };
+
+               /* Colibri AIN2 */
+               channel@6 {
+                       reg = <6>;
+                       ti,datarate = <4>;
+                       ti,gain = <1>;
+               };
+
+               /* Colibri AIN3 */
+               channel@7 {
+                       reg = <7>;
+                       ti,datarate = <4>;
+                       ti,gain = <1>;
+               };
+       };
+};
index 9f33419..3525cbc 100644 (file)
@@ -10,7 +10,6 @@
 
 / {
        model = "Toradex Colibri iMX6DL/S Module";
-       compatible = "toradex,colibri_imx6dl", "fsl,imx6dl";
 
        aliases {
                mmc0 = &usdhc3; /* eMMC */
                        st,settling = <3>;
                        /* 5 ms touch detect interrupt delay */
                        st,touch-det-delay = <5>;
-                       status = "disabled";
                };
 
                stmpe_adc: stmpe_adc {
index 8cefda7..ee2c6be 100644 (file)
                compatible = "fsl,imx-audio-tlv320aic32x4";
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_audmux>;
-               model = "imx-audio-tlv320aic32x4";
+               model = "tqm-tlv320aic32";
                ssi-controller = <&ssi1>;
                audio-codec = <&tlv320aic32x4>;
                audio-asrc = <&asrc>;
index 6152a9e..07492f6 100644 (file)
@@ -7,16 +7,6 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 
-/ {
-       reg_3p3v: regulator-3p3v {
-               compatible = "regulator-fixed";
-               regulator-name = "supply-3p3v";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-always-on;
-       };
-};
-
 &ecspi1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_ecspi1>;
 
        m25p80: flash@0 {
                compatible = "jedec,spi-nor";
-               spi-max-frequency = <50000000>;
                reg = <0>;
-               #address-cells = <1>;
-               #size-cells = <1>;
+               spi-max-frequency = <50000000>;
+               vcc-supply = <&sw4_reg>;
                m25p,fast-read;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+               };
        };
 };
 
                };
 
                sw4_reg: sw4 {
-                       regulator-min-microvolt = <800000>;
+                       regulator-min-microvolt = <3300000>;
                        regulator-max-microvolt = <3300000>;
                        regulator-always-on;
                };
 &usdhc3 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc3>;
-       vmmc-supply = <&reg_3p3v>;
+       vmmc-supply = <&sw4_reg>;
        non-removable;
        disable-wp;
        no-sd;
index 8289963..e8fd37d 100644 (file)
        temperature-sensor@48 {
                compatible = "national,lm75a";
                reg = <0x48>;
-               vs-supply = <&reg_3p3v>;
+               vs-supply = <&sw4_reg>;
        };
 
        eeprom@50 {
                compatible = "st,24c64", "atmel,24c64";
                reg = <0x50>;
                pagesize = <32>;
-               vcc-supply = <&reg_3p3v>;
+               vcc-supply = <&sw4_reg>;
        };
 };
 
index 1d0966b..0e404c1 100644 (file)
        temperature-sensor@48 {
                compatible = "national,lm75a";
                reg = <0x48>;
-               vs-supply = <&reg_3p3v>;
+               vs-supply = <&sw4_reg>;
        };
 
        eeprom@50 {
                compatible = "st,24c64", "atmel,24c64";
                reg = <0x50>;
                pagesize = <32>;
-               vcc-supply = <&reg_3p3v>;
+               vcc-supply = <&sw4_reg>;
        };
 };
 
index 0e839bb..911ccbd 100644 (file)
                gpios = <&gpio_spi 3 GPIO_ACTIVE_LOW>;
        };
 
+       reg_audio_5v: regulator-audio-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       reg_audio_3v3: regulator-audio-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       reg_audio_1v8: regulator-audio-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        sound-wm8960 {
                compatible = "fsl,imx-audio-wm8960";
                model = "wm8960-audio";
                wlf,gpio-cfg = <1 3>;
                clocks = <&clks IMX6UL_CLK_SAI2>;
                clock-names = "mclk";
+               AVDD-supply = <&reg_audio_3v3>;
+               DBVDD-supply = <&reg_audio_1v8>;
+               DCVDD-supply = <&reg_audio_1v8>;
+               SPKVDD1-supply = <&reg_audio_5v>;
+               SPKVDD2-supply = <&reg_audio_5v>;
        };
 
        camera@3c {
index f2386dc..dda4fa9 100644 (file)
@@ -40,6 +40,9 @@
                        reg = <1>;
                        interrupt-parent = <&gpio4>;
                        interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
+                       micrel,led-mode = <1>;
+                       clocks = <&clks IMX6UL_CLK_ENET_REF>;
+                       clock-names = "rmii-ref";
                        status = "okay";
                };
        };
index c9c0794..2dd635a 100644 (file)
        status = "okay";
 
        flash0: flash@0 {
-               #address-cells = <1>;
-               #size-cells = <1>;
                compatible = "jedec,spi-nor";
+               reg = <0>;
                spi-max-frequency = <33000000>;
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <1>;
-               reg = <0>;
+               vcc-supply = <&reg_vldo4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+               };
        };
 };
 
index f2a5f17..2e7b96e 100644 (file)
@@ -6,8 +6,9 @@
 
 /dts-v1/;
 
-#include "imx6ul-tqma6ul1.dtsi"
+#include "imx6ul-tqma6ul2.dtsi"
 #include "mba6ulx.dtsi"
+#include "imx6ul-tqma6ul1.dtsi"
 
 / {
        model = "TQ-Systems TQMa6UL1 SoM on MBa6ULx board";
index 24192d0..79c8c55 100644 (file)
@@ -4,8 +4,6 @@
  * Author: Markus Niebel <Markus.Niebel@tq-group.com>
  */
 
-#include "imx6ul-tqma6ul2.dtsi"
-
 / {
        model = "TQ-Systems TQMa6UL1 SoM";
        compatible = "tq,imx6ul-tqma6ul1", "fsl,imx6ul";
diff --git a/src/arm/nxp/imx/imx6ul-var-som-concerto.dts b/src/arm/nxp/imx/imx6ul-var-som-concerto.dts
new file mode 100644 (file)
index 0000000..9ff3b37
--- /dev/null
@@ -0,0 +1,320 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Support for Variscite MX6 Concerto Carrier board with the VAR-SOM-MX6UL
+ * Variscite SoM mounted on it
+ *
+ * Copyright 2019 Variscite Ltd.
+ * Copyright 2025 Bootlin
+ */
+
+#include "imx6ul-var-som.dtsi"
+#include <dt-bindings/leds/common.h>
+
+/ {
+       model = "Variscite VAR-SOM-MX6UL Concerto Board";
+       compatible = "variscite,mx6ulconcerto", "variscite,var-som-imx6ul", "fsl,imx6ul";
+
+       chosen {
+               stdout-path = &uart1;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_key_back>, <&pinctrl_gpio_key_wakeup>;
+
+               key-back {
+                       gpios = <&gpio4 14 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_BACK>;
+               };
+
+               key-wakeup {
+                       gpios = <&gpio5 8 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WAKEUP>;
+                       wakeup-source;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_leds>;
+
+               led-0 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       label = "gpled2";
+                       gpios = <&gpio1 25 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       status = "okay";
+};
+
+&fec1 {
+       status = "disabled";
+};
+
+&fec2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet2>, <&pinctrl_enet2_gpio>, <&pinctrl_enet2_mdio>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy1>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy1: ethernet-phy@3 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <3>;
+                       clocks = <&rmii_ref_clk>;
+                       clock-names = "rmii-ref";
+                       reset-gpios = <&gpio5 5 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <100000>;
+                       micrel,led-mode = <0>;
+                       micrel,rmii-reference-clock-select-25-mhz = <1>;
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       status = "okay";
+
+       rtc@68 {
+               /*
+                * To actually use this interrupt
+                * connect pins J14.8 & J14.10 on the Concerto-Board.
+                */
+               compatible = "dallas,ds1337";
+               reg = <0x68>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rtc>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <10 IRQ_TYPE_EDGE_FALLING>;
+       };
+};
+
+&iomuxc {
+       pinctrl_enet2: enet2grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN      0x1b0b0
+                       MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER      0x1b0b0
+                       MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0
+                       MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0
+                       MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN      0x1b0b0
+                       MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0
+                       MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0
+                       MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2  0x4001b031
+               >;
+       };
+
+       pinctrl_enet2_gpio: enet2-gpiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER5__GPIO5_IO05      0x1b0b0 /* fec2 reset */
+               >;
+       };
+
+       pinctrl_enet2_mdio: enet2-mdiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO06__ENET2_MDIO        0x1b0b0
+                       MX6UL_PAD_GPIO1_IO07__ENET2_MDC         0x1b0b0
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX      0x1b020
+                       MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX      0x1b020
+               >;
+       };
+
+       pinctrl_gpio_key_back: gpio-key-backgrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_CE1_B__GPIO4_IO14        0x17059
+               >;
+       };
+
+       pinctrl_gpio_leds: gpio-ledsgrp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_RX_DATA__GPIO1_IO25     0x1b0b0 /* GPLED2 */
+               >;
+       };
+
+       pinctrl_gpio_key_wakeup: gpio-keys-wakeupgrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08      0x17059
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_PIXCLK__I2C1_SCL          0x4001b8b0
+                       MX6UL_PAD_CSI_MCLK__I2C1_SDA            0x4001b8b0
+               >;
+       };
+
+       pinctrl_pwm4: pwm4grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO05__PWM4_OUT          0x110b0
+               >;
+       };
+
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_MOD__GPIO1_IO10          0x1b0b0 /* RTC alarm IRQ */
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x1b0b1
+               >;
+       };
+
+       pinctrl_uart5: uart5grp {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_DATA00__UART5_DCE_TX      0x1b0b1
+                       MX6UL_PAD_CSI_DATA01__UART5_DCE_RX      0x1b0b1
+                       MX6UL_PAD_GPIO1_IO09__UART5_DCE_CTS     0x1b0b1
+                       MX6UL_PAD_GPIO1_IO08__UART5_DCE_RTS     0x1b0b1
+               >;
+       };
+
+       pinctrl_usb_otg1_id: usbotg1idgrp {
+               fsl,pins = <
+                       MX6UL_PAD_UART3_TX_DATA__ANATOP_OTG1_ID 0x17059
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x17059
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x17059
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x17059
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x17059
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x17059
+               >;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x170b9
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x100b9
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x170b9
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x170b9
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x170b9
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x170b9
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x170f9
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x100f9
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x170f9
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x170f9
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x170f9
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x170f9
+               >;
+       };
+
+       pinctrl_usdhc1_gpio: usdhc1-gpiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO00__GPIO1_IO00        0x1b0b1 /* CD */
+               >;
+       };
+
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO01__WDOG1_WDOG_B      0x78b0
+               >;
+       };
+};
+
+&pwm4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm4>;
+       status = "okay";
+};
+
+&snvs_pwrkey {
+       status = "disabled";
+};
+
+&snvs_rtc {
+       status = "disabled";
+};
+
+&tsc {
+       /*
+        * Conflics with wdog1 ext-reset-output & SD CD pins,
+        * so we keep it disabled by default.
+        */
+       status = "disabled";
+};
+
+/* Console UART */
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+/* ttymxc4 UART */
+&uart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart5>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&usbotg1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb_otg1_id>;
+       dr_mode = "otg";
+       disable-over-current;
+       srp-disable;
+       hnp-disable;
+       adp-disable;
+       status = "okay";
+};
+
+&usbotg2 {
+       dr_mode = "host";
+       disable-over-current;
+       status = "okay";
+};
+
+&usdhc1 {
+       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>;
+       cd-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
+       no-1-8-v;
+       keep-power-in-suspend;
+       wakeup-source;
+       status = "okay";
+};
+
+&wdog1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdog>;
+       /*
+        * To actually use ext-reset-output
+        * connect pins J17.3 & J17.8 on the Concerto-Board
+        */
+       fsl,ext-reset-output;
+};
diff --git a/src/arm/nxp/imx/imx6ul-var-som.dtsi b/src/arm/nxp/imx/imx6ul-var-som.dtsi
new file mode 100644 (file)
index 0000000..4e536e0
--- /dev/null
@@ -0,0 +1,233 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Support for Variscite VAR-SOM-MX6UL Module
+ *
+ * Copyright 2019 Variscite Ltd.
+ * Copyright 2025 Bootlin
+ */
+
+/dts-v1/;
+
+#include "imx6ul.dtsi"
+#include <dt-bindings/clock/imx6ul-clock.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       model = "Variscite VAR-SOM-MX6UL module";
+       compatible = "variscite,var-som-imx6ul", "fsl,imx6ul";
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>;
+       };
+
+       reg_gpio_dvfs: reg-gpio-dvfs {
+               compatible = "regulator-gpio";
+               regulator-min-microvolt = <1300000>;
+               regulator-max-microvolt = <1400000>;
+               regulator-name = "gpio_dvfs";
+               regulator-type = "voltage";
+               gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
+               states = <1300000 0x1
+                         1400000 0x0>;
+       };
+
+       rmii_ref_clk: rmii-ref-clk {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <25000000>;
+               clock-output-names = "rmii-ref";
+       };
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
+       assigned-clock-rates = <786432000>;
+};
+
+&cpu0 {
+       dc-supply = <&reg_gpio_dvfs>;
+};
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet1>, <&pinctrl_enet1_gpio>, <&pinctrl_enet1_mdio>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy0>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@1 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <1>;
+                       clocks = <&rmii_ref_clk>;
+                       clock-names = "rmii-ref";
+                       reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <100000>;
+                       micrel,led-mode = <1>;
+                       micrel,rmii-reference-clock-select-25-mhz = <1>;
+               };
+       };
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       pinctrl_enet1: enet1grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN      0x1b0b0
+                       MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER      0x1b0b0
+                       MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
+                       MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN      0x1b0b0
+                       MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x4001b031
+               >;
+       };
+
+       pinctrl_enet1_gpio: enet1-gpiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00      0x1b0b0 /* fec1 reset */
+               >;
+       };
+
+       pinctrl_enet1_mdio: enet1-mdiogrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO06__ENET1_MDIO        0x1b0b0
+                       MX6UL_PAD_GPIO1_IO07__ENET1_MDC         0x1b0b0
+               >;
+       };
+
+       pinctrl_hog: hoggrp {
+               fsl,pins = <
+                       MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04      0x1b0b0 /* BT Enable */
+                       MX6UL_PAD_SNVS_TAMPER6__GPIO5_IO06      0x03029 /* WLAN Enable */
+               >;
+       };
+
+       pinctrl_sai2: sai2grp {
+               fsl,pins = <
+                       MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK        0x17088
+                       MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC        0x17088
+                       MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA     0x11088
+                       MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA        0x11088
+                       MX6UL_PAD_JTAG_TMS__SAI2_MCLK           0x17088
+               >;
+       };
+
+       pinctrl_tsc: tscgrp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO01__GPIO1_IO01        0xb0
+                       MX6UL_PAD_GPIO1_IO02__GPIO1_IO02        0xb0
+                       MX6UL_PAD_GPIO1_IO03__GPIO1_IO03        0xb0
+                       MX6UL_PAD_GPIO1_IO04__GPIO1_IO04        0xb0
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX   0x1b0b1
+                       MX6UL_PAD_UART2_CTS_B__UART2_DCE_CTS    0x1b0b1
+                       MX6UL_PAD_UART2_RTS_B__UART2_DCE_RTS    0x1b0b1
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x10069
+                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD         0x17059
+                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0     0x17059
+                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1     0x17059
+                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2     0x17059
+                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3     0x17059
+                       MX6UL_PAD_NAND_DATA04__USDHC2_DATA4     0x17059
+                       MX6UL_PAD_NAND_DATA05__USDHC2_DATA5     0x17059
+                       MX6UL_PAD_NAND_DATA06__USDHC2_DATA6     0x17059
+                       MX6UL_PAD_NAND_DATA07__USDHC2_DATA7     0x17059
+               >;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x100b9
+                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD         0x170b9
+                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0     0x170b9
+                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1     0x170b9
+                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2     0x170b9
+                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3     0x170b9
+                       MX6UL_PAD_NAND_DATA04__USDHC2_DATA4     0x170b9
+                       MX6UL_PAD_NAND_DATA05__USDHC2_DATA5     0x170b9
+                       MX6UL_PAD_NAND_DATA06__USDHC2_DATA6     0x170b9
+                       MX6UL_PAD_NAND_DATA07__USDHC2_DATA7     0x170b9
+               >;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK         0x100f9
+                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD         0x170f9
+                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0     0x170f9
+                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1     0x170f9
+                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2     0x170f9
+                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3     0x170f9
+                       MX6UL_PAD_NAND_DATA04__USDHC2_DATA4     0x170f9
+                       MX6UL_PAD_NAND_DATA05__USDHC2_DATA5     0x170f9
+                       MX6UL_PAD_NAND_DATA06__USDHC2_DATA6     0x170f9
+                       MX6UL_PAD_NAND_DATA07__USDHC2_DATA7     0x170f9
+               >;
+       };
+};
+
+&pxp {
+       status = "okay";
+};
+
+&sai2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai2>;
+       assigned-clocks = <&clks IMX6UL_CLK_SAI2_SEL>,
+                         <&clks IMX6UL_CLK_SAI2>;
+       assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
+       assigned-clock-rates = <0>, <12288000>;
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
+&snvs_poweroff {
+       status = "okay";
+};
+
+&tsc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_tsc>;
+       xnur-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
+       measure-delay-time = <0xffff>;
+       pre-charge-time = <0xfff>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
+       bus-width = <8>;
+       no-1-8-v;
+       non-removable;
+       keep-power-in-suspend;
+       wakeup-source;
+       status = "okay";
+};
index 576a7df..4d948a9 100644 (file)
 
        sound {
                compatible = "fsl,imx-audio-tlv320aic32x4";
-               model = "imx-audio-tlv320aic32x4";
+               model = "tqm-tlv320aic32";
                ssi-controller = <&sai1>;
                audio-codec = <&tlv320aic32x4>;
                audio-routing =
index aa8f65c..2966a33 100644 (file)
                spi-max-frequency = <29000000>;
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <4>;
+               vcc-supply = <&vgen4_reg>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+               };
        };
 };
 
index 6cde846..17236f9 100644 (file)
                gpio = <&gpio1 4 GPIO_ACTIVE_LOW>;
        };
 
+       reg_audio_5v: regulator-audio-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       reg_audio_3v3: regulator-audio-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       reg_audio_1v8: regulator-audio-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        backlight: backlight {
                compatible = "pwm-backlight";
                pwms = <&pwm1 0 5000000 0>;
                                  <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
                assigned-clock-parents = <&clks IMX7D_PLL_AUDIO_POST_DIV>;
                assigned-clock-rates = <0>, <884736000>, <12288000>;
+               AVDD-supply = <&reg_audio_3v3>;
+               DBVDD-supply = <&reg_audio_1v8>;
+               DCVDD-supply = <&reg_audio_1v8>;
+               SPKVDD1-supply = <&reg_audio_5v>;
+               SPKVDD2-supply = <&reg_audio_5v>;
        };
 };
 
index 22dd724..2629968 100644 (file)
                             <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
        };
 
+       video_mux: csi-mux {
+               compatible = "video-mux";
+               mux-controls = <&mux 0>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+
+               port@0 {
+                       reg = <0>;
+               };
+
+               port@1 {
+                       reg = <1>;
+
+                       csi_mux_from_mipi_vc0: endpoint {
+                               remote-endpoint = <&mipi_vc0_to_csi_mux>;
+                       };
+               };
+
+               port@2 {
+                       reg = <2>;
+
+                       csi_mux_to_csi: endpoint {
+                               remote-endpoint = <&csi_from_csi_mux>;
+                       };
+               };
+       };
+
        soc: soc {
                #address-cells = <1>;
                #size-cells = <1>;
                                        #mux-control-cells = <1>;
                                        mux-reg-masks = <0x14 0x00000010>;
                                };
-
-                               video_mux: csi-mux {
-                                       compatible = "video-mux";
-                                       mux-controls = <&mux 0>;
-                                       #address-cells = <1>;
-                                       #size-cells = <0>;
-                                       status = "disabled";
-
-                                       port@0 {
-                                               reg = <0>;
-                                       };
-
-                                       port@1 {
-                                               reg = <1>;
-
-                                               csi_mux_from_mipi_vc0: endpoint {
-                                                       remote-endpoint = <&mipi_vc0_to_csi_mux>;
-                                               };
-                                       };
-
-                                       port@2 {
-                                               reg = <2>;
-
-                                               csi_mux_to_csi: endpoint {
-                                                       remote-endpoint = <&csi_from_csi_mux>;
-                                               };
-                                       };
-                               };
                        };
 
                        ocotp: efuse@30350000 {
index 941d986..67a3d48 100644 (file)
 
        sound {
                compatible = "fsl,imx-audio-tlv320aic32x4";
-               model = "imx-audio-tlv320aic32x4";
+               model = "tqm-tlv320aic32";
                ssi-controller = <&sai1>;
                audio-codec = <&tlv320aic32x4>;
                audio-asrc = <&asrc>;
diff --git a/src/arm/nxp/mxs/imx28-btt3-0.dts b/src/arm/nxp/mxs/imx28-btt3-0.dts
new file mode 100644 (file)
index 0000000..6ac46e4
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2024
+ * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
+ */
+
+/dts-v1/;
+#include "imx28-btt3.dtsi"
+
+&hog_pins_rev {
+       fsl,pull-up = <MXS_PULL_ENABLE>;
+};
diff --git a/src/arm/nxp/mxs/imx28-btt3-1.dts b/src/arm/nxp/mxs/imx28-btt3-1.dts
new file mode 100644 (file)
index 0000000..213fe93
--- /dev/null
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2024
+ * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
+ */
+
+/dts-v1/;
+#include "imx28-btt3.dtsi"
diff --git a/src/arm/nxp/mxs/imx28-btt3-2.dts b/src/arm/nxp/mxs/imx28-btt3-2.dts
new file mode 100644 (file)
index 0000000..4bccd78
--- /dev/null
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2024
+ * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
+ */
+
+/dts-v1/;
+#include "imx28-btt3.dtsi"
+
+/ {
+       panel {
+               compatible = "powertip,st7272", "panel-dpi";
+               power-supply = <&reg_3v3>;
+               width-mm = <70>;
+               height-mm = <52>;
+
+               panel-timing {
+                       clock-frequency = <6500000>;
+                       hactive = <320>;
+                       vactive = <240>;
+                       hfront-porch = <20>;
+                       hback-porch = <68>;
+                       hsync-len = <30>;
+                       vfront-porch = <4>;
+                       vback-porch = <14>;
+                       vsync-len = <4>;
+                       hsync-active = <0>;
+                       vsync-active = <0>;
+                       de-active = <1>;
+                       pixelclk-active = <1>;
+               };
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display_out>;
+                       };
+               };
+       };
+};
diff --git a/src/arm/nxp/mxs/imx28-btt3.dtsi b/src/arm/nxp/mxs/imx28-btt3.dtsi
new file mode 100644 (file)
index 0000000..2c52e67
--- /dev/null
@@ -0,0 +1,313 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2024
+ * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
+ */
+/dts-v1/;
+#include "imx28-lwe.dtsi"
+
+/ {
+       model = "BTT3";
+
+       compatible = "lwn,imx28-btt3", "fsl,imx28";
+
+       chosen {
+              bootargs = "root=/dev/mmcblk0p2 rootfstype=ext4 ro rootwait console=ttyAMA0,115200 panic=1 quiet";
+       };
+
+       memory@40000000 {
+               reg = <0x40000000 0x10000000>;
+               device_type = "memory";
+       };
+
+       panel {
+               compatible = "powertip,hx8238a", "panel-dpi";
+               power-supply = <&reg_3v3>;
+               width-mm = <70>;
+               height-mm = <52>;
+
+               panel-timing {
+                       clock-frequency = <6500000>;
+                       hactive = <320>;
+                       vactive = <240>;
+                       hfront-porch = <20>;
+                       hback-porch = <38>;
+                       hsync-len = <30>;
+                       vfront-porch = <4>;
+                       vback-porch = <14>;
+                       vsync-len = <4>;
+                       hsync-active = <0>;
+                       vsync-active = <0>;
+                       de-active = <0>;
+                       pixelclk-active = <1>;
+               };
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display_out>;
+                       };
+               };
+       };
+
+       poweroff {
+               compatible = "gpio-poweroff";
+               gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>;
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "BTTC Audio";
+               simple-audio-card,widgets = "Speaker", "BTTC Speaker";
+               simple-audio-card,routing = "BTTC Speaker", "SPKOUTN", "BTTC Speaker", "SPKOUTP";
+
+               simple-audio-card,dai-link@0 {
+                       format = "left_j";
+                       bitclock-master = <&dai0_master>;
+                       frame-master = <&dai0_master>;
+                       mclk-fs = <256>;
+
+                       dai0_master: cpu {
+                               sound-dai = <&saif0>;
+                       };
+
+                       codec {
+                               sound-dai = <&wm89xx>;
+                               clocks = <&saif0>;
+                       };
+               };
+       };
+
+       wifi_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_en_pin_bttc>;
+               reset-gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
+               /* W1-163 needs 60us for WL_EN to be low and */
+               /* 150ms after high before downloading FW is possible */
+               post-power-on-delay-ms = <200>;
+               power-off-delay-us = <100>;
+       };
+};
+
+&auart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&auart0_2pins_a>;
+       status = "okay";
+};
+
+&auart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&auart3_pins_a>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&i2c0 {
+       wm89xx: audio-codec@1a {
+               compatible = "wlf,wm8940";
+               reg = <0x1a>;
+               #sound-dai-cells = <0>;
+       };
+};
+
+&lcdif {
+       pinctrl-names = "default";
+       pinctrl-0 = <&lcdif_24bit_pins_a>, <&lcdif_sync_pins_bttc>,
+                   <&lcdif_reset_pins_bttc>;
+       status = "okay";
+
+       port {
+               display_out: endpoint {
+                       remote-endpoint = <&panel_in>;
+               };
+       };
+};
+
+&mac0 {
+       clocks = <&clks 57>, <&clks 57>, <&clks 64>;
+       clock-names = "ipg", "ahb", "enet_out";
+       phy-handle = <&mac0_phy>;
+       phy-mode = "rmii";
+       phy-supply = <&reg_3v3>;
+       /*
+        * This MAC address is adjusted during production.
+        * Value specified below is used as a fallback during recovery.
+        */
+       local-mac-address = [ 00 11 B8 00 BF 8A ];
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               mac0_phy: ethernet-phy@0 {
+                       /* LAN8720Ai - PHY ID */
+                       compatible = "ethernet-phy-id0007.c0f0","ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       smsc,disable-energy-detect;
+                       max-speed = <100>;
+                       reset-gpios = <&gpio4 12 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <1000>;
+                       reset-deassert-us = <1000>;
+               };
+       };
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&hog_pins_a>, <&hog_pins_rev>;
+
+       hog_pins_a: hog@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_GPMI_RDY2__GPIO_0_22
+                       MX28_PAD_GPMI_RDY3__GPIO_0_23
+                       MX28_PAD_GPMI_RDN__GPIO_0_24
+                       MX28_PAD_LCD_VSYNC__GPIO_1_28
+                       MX28_PAD_SSP2_SS1__GPIO_2_20
+                       MX28_PAD_SSP2_SS2__GPIO_2_21
+                       MX28_PAD_AUART2_CTS__GPIO_3_10
+                       MX28_PAD_AUART2_RTS__GPIO_3_11
+                       MX28_PAD_GPMI_WRN__GPIO_0_25
+                       MX28_PAD_ENET0_RXD2__GPIO_4_9
+                       MX28_PAD_ENET0_TXD2__GPIO_4_11
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       hog_pins_rev: hog@1 {
+               reg = <1>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_ENET0_RXD3__GPIO_4_10
+                       MX28_PAD_ENET0_TX_CLK__GPIO_4_5
+                       MX28_PAD_ENET0_COL__GPIO_4_14
+                       MX28_PAD_ENET0_CRS__GPIO_4_15
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       keypad_pins_bttc: keypad-bttc@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_GPMI_D00__GPIO_0_0
+                       MX28_PAD_AUART0_CTS__GPIO_3_2
+                       MX28_PAD_AUART0_RTS__GPIO_3_3
+                       MX28_PAD_GPMI_D03__GPIO_0_3
+                       MX28_PAD_GPMI_D04__GPIO_0_4
+                       MX28_PAD_GPMI_D05__GPIO_0_5
+                       MX28_PAD_GPMI_D06__GPIO_0_6
+                       MX28_PAD_GPMI_D07__GPIO_0_7
+                       MX28_PAD_GPMI_CE1N__GPIO_0_17
+                       MX28_PAD_GPMI_CE2N__GPIO_0_18
+                       MX28_PAD_GPMI_CE3N__GPIO_0_19
+                       MX28_PAD_GPMI_RDY0__GPIO_0_20
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       lcdif_sync_pins_bttc: lcdif-bttc@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_LCD_DOTCLK__LCD_DOTCLK
+                       MX28_PAD_LCD_ENABLE__LCD_ENABLE
+                       MX28_PAD_LCD_HSYNC__LCD_HSYNC
+                       MX28_PAD_LCD_RD_E__LCD_VSYNC
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       lcdif_reset_pins_bttc: lcdif-bttc@1 {
+               reg = <1>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_LCD_RESET__GPIO_3_30
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_ENABLE>;
+       };
+
+       ssp1_sdio_pins_a: ssp1-sdio@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_SSP1_DATA0__SSP1_D0
+                       MX28_PAD_GPMI_D01__SSP1_D1
+                       MX28_PAD_GPMI_D02__SSP1_D2
+                       MX28_PAD_SSP1_DATA3__SSP1_D3
+                       MX28_PAD_SSP1_CMD__SSP1_CMD
+                       MX28_PAD_SSP1_SCK__SSP1_SCK
+               >;
+               fsl,drive-strength = <MXS_DRIVE_8mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_ENABLE>;
+       };
+
+       wifi_en_pin_bttc: wifi-en-pin@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_GPMI_CLE__GPIO_0_27
+               >;
+               fsl,drive-strength = <MXS_DRIVE_8mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_ENABLE>;
+       };
+};
+
+&pwm {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm3_pins_a>;
+       status = "okay";
+};
+
+&reg_usb_5v {
+       gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
+};
+
+&saif0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&saif0_pins_a>;
+       #sound-dai-cells = <0>;
+       assigned-clocks = <&clks 53>;
+       assigned-clock-rates = <12000000>;
+       status = "okay";
+};
+
+&saif1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&saif1_pins_a>;
+       #sound-dai-cells = <0>;
+       fsl,saif-master = <&saif0>;
+       status = "okay";
+};
+
+&ssp1 {
+       compatible = "fsl,imx28-mmc";
+       pinctrl-names = "default";
+       pinctrl-0 = <&ssp1_sdio_pins_a>;
+       bus-width = <4>;
+       no-1-8-v;       /* force 3.3V VIO */
+       non-removable;
+       vmmc-supply = <&reg_3v3>;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       keep-power-in-suspend;
+       status = "okay";
+
+       wlan@1 {
+               reg = <1>;
+               compatible = "brcm,bcm4329-fmac";
+       };
+};
+
+&ssp2 {
+       compatible = "fsl,imx28-spi";
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi2_pins_a>;
+       status = "okay";
+};
index 0f01dde..ca62e79 100644 (file)
        };
 
        leds {
-               #address-cells = <1>;
-               #size-cells = <0>;
                compatible = "gpio-leds";
                status = "okay";
 
-               led@1 {
+               led-1 {
                        label = "sps1-1:yellow:user";
                        gpios = <&gpio0 6 0>;
                        linux,default-trigger = "heartbeat";
-                       reg = <0>;
                };
 
-               led@2 {
+               led-2 {
                        label = "sps1-2:red:user";
                        gpios = <&gpio0 3 0>;
                        linux,default-trigger = "heartbeat";
-                       reg = <1>;
                };
 
-               led@3 {
+               led-3 {
                        label = "sps1-3:red:user";
                        gpios = <&gpio0 0 0>;
-                       default-trigger = "heartbeat";
-                       reg = <2>;
+                       linux,default-trigger = "heartbeat";
                };
 
        };
index 722182f..2492fb9 100644 (file)
        status = "okay";
 
        spidev0@0 {
-               compatible = "lwn,bk4";
+               compatible = "lwn,bk4-spi";
                spi-max-frequency = <30000000>;
                reg = <0>;
                fsl,spi-cs-sck-delay = <200>;
        #address-cells = <0>;
 
        slave {
-               compatible = "lwn,bk4";
+               compatible = "lwn,bk4-spi";
                spi-max-frequency = <30000000>;
        };
 };
index 607cec2..20aed39 100644 (file)
@@ -8,7 +8,6 @@
 
 / {
        model = "Toradex Colibri VF61 COM";
-       compatible = "toradex,vf610-colibri_vf61", "fsl,vf610";
 
        memory@80000000 {
                device_type = "memory";
index 6f9878f..4f99044 100644 (file)
 };
 
 &gpio0 {
-       eth0_intrp {
+       eth0-intrp-hog {
                gpio-hog;
                gpios = <23 GPIO_ACTIVE_HIGH>;
                input;
 };
 
 &gpio3 {
-       eth0_intrp {
+       eth0-intrp-hog {
                gpio-hog;
                gpios = <2 GPIO_ACTIVE_HIGH>;
                input;
index acccf9a..597f20b 100644 (file)
                                clocks = <&clks VF610_CLK_DSPI0>;
                                clock-names = "dspi";
                                spi-num-chipselects = <6>;
-                               dmas = <&edma1 1 12>, <&edma1 1 13>;
-                               dma-names = "rx", "tx";
+                               dmas = <&edma1 1 13>, <&edma1 1 12>;
+                               dma-names = "tx", "rx";
                                status = "disabled";
                        };
 
                                clocks = <&clks VF610_CLK_DSPI1>;
                                clock-names = "dspi";
                                spi-num-chipselects = <4>;
-                               dmas = <&edma1 1 14>, <&edma1 1 15>;
-                               dma-names = "rx", "tx";
+                               dmas = <&edma1 1 15>, <&edma1 1 14>;
+                               dma-names = "tx", "rx";
                                status = "disabled";
                        };
 
                                clocks = <&clks VF610_CLK_DSPI2>;
                                clock-names = "dspi";
                                spi-num-chipselects = <2>;
-                               dmas = <&edma1 0 10>,
-                                       <&edma1 0 11>;
-                               dma-names = "rx", "tx";
+                               dmas = <&edma1 0 11>, <&edma1 0 10>;
+                               dma-names = "tx", "rx";
                                status = "disabled";
                        };
 
                                clocks = <&clks VF610_CLK_DSPI3>;
                                clock-names = "dspi";
                                spi-num-chipselects = <2>;
-                               dmas = <&edma1 0 12>, <&edma1 0 13>;
-                               dma-names = "rx", "tx";
+                               dmas = <&edma1 0 13>, <&edma1 0 12>;
+                               dma-names = "tx", "rx";
                                status = "disabled";
                        };
 
                                clocks = <&clks VF610_CLK_CAAM>;
                                clock-names = "ipg";
 
-                               sec_jr0: jr0@1000 {
+                               sec_jr0: jr@1000 {
                                        compatible = "fsl,sec-v4.0-job-ring";
                                        reg = <0x1000 0x1000>;
                                        interrupts = <102 IRQ_TYPE_LEVEL_HIGH>;
                                };
 
-                               sec_jr1: jr1@2000 {
+                               sec_jr1: jr@2000 {
                                        compatible = "fsl,sec-v4.0-job-ring";
                                        reg = <0x2000 0x1000>;
                                        interrupts = <102 IRQ_TYPE_LEVEL_HIGH>;
index 3bce587..4f002aa 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index d7c0a95..b1e2057 100644 (file)
 &scifa0 {
        pinctrl-0 = <&scifa0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index f746f0b..4f97c09 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board. */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
 
                #address-cells = <2>;
                #size-cells = <2>;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a7790";
                        reg = <0 0xe6060000 0 0x250>;
+                       bootph-all;
                };
 
                tpu: pwm@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                apmu@e6151000 {
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a7790-rst";
                        reg = <0 0xe6160000 0 0x0100>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@ff000044 {
                        compatible = "renesas,prr";
                        reg = <0 0xff000044 0 4>;
+                       bootph-all;
                };
 
                cmt0: timer@ffca0000 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <48000000>;
+               bootph-all;
        };
 };
index e4e1d9c..e9f90fa 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 0838149..f518ead 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index e57567a..5023b41 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board. */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
 
                #address-cells = <2>;
                #size-cells = <2>;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a7791";
                        reg = <0 0xe6060000 0 0x250>;
+                       bootph-all;
                };
 
                tpu: pwm@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                apmu@e6152000 {
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a7791-rst";
                        reg = <0 0xe6160000 0 0x0100>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@ff000044 {
                        compatible = "renesas,prr";
                        reg = <0 0xff000044 0 4>;
+                       bootph-all;
                };
 
                cmt0: timer@ffca0000 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <48000000>;
+               bootph-all;
        };
 };
index a398607..23ec0f8 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index bfc780f..93bd817 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 08cbe6c..7513afc 100644 (file)
@@ -82,6 +82,7 @@
                #clock-cells = <0>;
                /* This value must be overridden by the board. */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        lbsc: bus {
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
 
                #address-cells = <2>;
                #size-cells = <2>;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a7792";
                        reg = <0 0xe6060000 0 0x144>;
+                       bootph-all;
                };
 
                cpg: clock-controller@e6150000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                apmu@e6152000 {
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a7792-rst";
                        reg = <0 0xe6160000 0 0x0100>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@ff000044 {
                        compatible = "renesas,prr";
                        reg = <0 0xff000044 0 4>;
+                       bootph-all;
                };
 
                cmt0: timer@ffca0000 {
index 2c05d7c..45b267e 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index e48e43c..fc6d3bc 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board. */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        pmu {
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
 
                #address-cells = <2>;
                #size-cells = <2>;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a7793";
                        reg = <0 0xe6060000 0 0x250>;
+                       bootph-all;
                };
 
                /* Special CPG clocks */
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                apmu@e6152000 {
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a7793-rst";
                        reg = <0 0xe6160000 0 0x0100>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@ff000044 {
                        compatible = "renesas,prr";
                        reg = <0 0xff000044 0 4>;
+                       bootph-all;
                };
 
                cmt0: timer@ffca0000 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <48000000>;
+               bootph-all;
        };
 };
index f70e26a..3f06a7f 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 2a08193..3428256 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index bc16c89..92010d0 100644 (file)
@@ -99,6 +99,7 @@
                #clock-cells = <0>;
                /* This value must be overridden by the board. */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        pmu {
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
 
                #address-cells = <2>;
                #size-cells = <2>;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a7794";
                        reg = <0 0xe6060000 0 0x11c>;
+                       bootph-all;
                };
 
                cpg: clock-controller@e6150000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                apmu@e6151000 {
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a7794-rst";
                        reg = <0 0xe6160000 0 0x0100>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@ff000044 {
                        compatible = "renesas,prr";
                        reg = <0 0xff000044 0 4>;
+                       bootph-all;
                };
 
                cmt0: timer@ffca0000 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <48000000>;
+               bootph-all;
        };
 };
index 7548291..87e0344 100644 (file)
                        reg-io-width = <4>;
                        clocks = <&sysctrl R9A06G032_CLK_UART3>, <&sysctrl R9A06G032_HCLK_UART3>;
                        clock-names = "baudclk", "apb_pclk";
-                       dmas = <&dmamux 0 0 0 0 0 1>, <&dmamux 1 0 0 0 1 1>;
-                       dma-names = "rx", "tx";
+                       dmas = <&dmamux 1 0 0 0 1 1>, <&dmamux 0 0 0 0 0 1>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        clocks = <&sysctrl R9A06G032_CLK_UART4>, <&sysctrl R9A06G032_HCLK_UART4>;
                        clock-names = "baudclk", "apb_pclk";
-                       dmas = <&dmamux 2 0 0 0 2 1>, <&dmamux 3 0 0 0 3 1>;
-                       dma-names = "rx", "tx";
+                       dmas = <&dmamux 3 0 0 0 3 1>, <&dmamux 2 0 0 0 2 1>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        clocks = <&sysctrl R9A06G032_CLK_UART5>, <&sysctrl R9A06G032_HCLK_UART5>;
                        clock-names = "baudclk", "apb_pclk";
-                       dmas = <&dmamux 4 0 0 0 4 1>, <&dmamux 5 0 0 0 5 1>;
-                       dma-names = "rx", "tx";
+                       dmas = <&dmamux 5 0 0 0 5 1>, <&dmamux 4 0 0 0 4 1>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        clocks = <&sysctrl R9A06G032_CLK_UART6>, <&sysctrl R9A06G032_HCLK_UART6>;
                        clock-names = "baudclk", "apb_pclk";
-                       dmas = <&dmamux 6 0 0 0 6 1>, <&dmamux 7 0 0 0 7 1>;
-                       dma-names = "rx", "tx";
+                       dmas = <&dmamux 7 0 0 0 7 1>, <&dmamux 6 0 0 0 6 1>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        clocks = <&sysctrl R9A06G032_CLK_UART7>, <&sysctrl R9A06G032_HCLK_UART7>;
                        clock-names = "baudclk", "apb_pclk";
-                       dmas = <&dmamux 4 0 0 0 20 1>, <&dmamux 5 0 0 0 21 1>;
-                       dma-names = "rx", "tx";
+                       dmas = <&dmamux 5 0 0 0 21 1>, <&dmamux 4 0 0 0 20 1>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
index 087de6f..b57dbdc 100644 (file)
                serial0 = &usart1;
        };
 
+       leds {
+               compatible = "gpio-leds";
+               led-usr {
+                       gpios = <&gpioi 1 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               autorepeat;
+               button-0 {
+                       label = "User";
+                       linux,code = <KEY_HOME>;
+                       gpios = <&gpioi 11 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
        usbotg_hs_phy: usb-phy {
                #phy-cells = <0>;
                compatible = "usb-nop-xceiv";
index 52c5baf..535cfdc 100644 (file)
 
        leds {
                compatible = "gpio-leds";
-               led-green {
+               led-usr2 {
                        gpios = <&gpioj 5 GPIO_ACTIVE_HIGH>;
                        linux,default-trigger = "heartbeat";
                };
-               led-red {
+               led-usr1 {
                        gpios = <&gpioj 13 GPIO_ACTIVE_HIGH>;
                };
+               led-usr3 {
+                       gpios = <&gpioa 12 GPIO_ACTIVE_HIGH>;
+               };
        };
 
        gpio-keys {
index 0019d12..8512a6e 100644 (file)
                always-on;
        };
 
+       thermal-zones {
+               cpu_thermal: cpu-thermal {
+                       polling-delay-passive = <0>;
+                       polling-delay = <0>;
+                       thermal-sensors = <&dts>;
+
+                       trips {
+                               cpu_alert1: cpu-alert1 {
+                                       temperature = <85000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               cpu-crit {
+                                       temperature = <120000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                       };
+               };
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <1>;
                        };
                };
 
+               dts: thermal@50028000 {
+                       compatible = "st,stm32-thermal";
+                       reg = <0x50028000 0x100>;
+                       interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&rcc DTS>;
+                       clock-names = "pclk";
+                       #thermal-sensor-cells = <0>;
+                       status = "disabled";
+               };
+
                mdma: dma-controller@58000000 {
                        compatible = "st,stm32h7-mdma";
                        reg = <0x58000000 0x1000>;
diff --git a/src/arm/st/stm32mp133c-prihmb.dts b/src/arm/st/stm32mp133c-prihmb.dts
new file mode 100644 (file)
index 0000000..663b6de
--- /dev/null
@@ -0,0 +1,496 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/regulator/st,stm32mp13-regulator.h>
+#include "stm32mp133.dtsi"
+#include "stm32mp13xc.dtsi"
+#include "stm32mp13-pinctrl.dtsi"
+
+/ {
+       model = "Priva E-Measuringbox board";
+       compatible = "pri,prihmb", "st,stm32mp133";
+
+       aliases {
+               ethernet0 = &ethernet1;
+               mdio-gpio0 = &mdio0;
+               mmc0 = &sdmmc1;
+               mmc1 = &sdmmc2;
+               serial0 = &uart4;
+               serial1 = &usart6;
+               serial2 = &uart7;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       counter-0 {
+               compatible = "interrupt-counter";
+               gpios = <&gpioa 11 GPIO_ACTIVE_HIGH>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               autorepeat;
+
+               button-reset {
+                       label = "reset-button";
+                       linux,code = <BTN_1>;
+                       gpios = <&gpioi 7 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-blue {
+                       function = LED_FUNCTION_HEARTBEAT;
+                       color = <LED_COLOR_ID_BLUE>;
+                       gpios = <&gpioa 14 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "heartbeat";
+                       default-state = "off";
+               };
+       };
+
+       led-controller-0 {
+               compatible = "pwm-leds-multicolor";
+
+               multi-led {
+                       color = <LED_COLOR_ID_RGB>;
+                       function = LED_FUNCTION_STATUS;
+                       max-brightness = <255>;
+
+                       led-red {
+                               active-low;
+                               color = <LED_COLOR_ID_RED>;
+                               pwms = <&pwm2 2 1000000 1>;
+                       };
+
+                       led-green {
+                               active-low;
+                               color = <LED_COLOR_ID_GREEN>;
+                               pwms = <&pwm1 1 1000000 1>;
+                       };
+
+                       led-blue {
+                               active-low;
+                               color = <LED_COLOR_ID_BLUE>;
+                               pwms = <&pwm1 2 1000000 1>;
+                       };
+               };
+       };
+
+       led-controller-1 {
+               compatible = "pwm-leds-multicolor";
+
+               multi-led {
+                       color = <LED_COLOR_ID_RGB>;
+                       function = LED_FUNCTION_STATUS;
+                       max-brightness = <255>;
+
+                       led-red {
+                               active-low;
+                               color = <LED_COLOR_ID_RED>;
+                               pwms = <&pwm1 0 1000000 1>;
+                       };
+
+                       led-green {
+                               active-low;
+                               color = <LED_COLOR_ID_GREEN>;
+                               pwms = <&pwm2 0 1000000 1>;
+                       };
+
+                       led-blue {
+                               active-low;
+                               color = <LED_COLOR_ID_BLUE>;
+                               pwms = <&pwm2 1 1000000 1>;
+                       };
+               };
+       };
+
+       /* DP83TD510E PHYs have max MDC rate of 1.75MHz. Since we can't reduce
+        * stmmac MDC clock without reducing system bus rate, we need to use
+        * gpio based MDIO bus.
+        */
+       mdio0: mdio {
+               compatible = "virtual,mdio-gpio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               gpios = <&gpiog 2 GPIO_ACTIVE_HIGH
+                        &gpioa 2 GPIO_ACTIVE_HIGH>;
+
+               /* TI DP83TD510E */
+               phy0: ethernet-phy@0 {
+                       compatible = "ethernet-phy-id2000.0181";
+                       reg = <0>;
+                       interrupts-extended = <&gpioa 4 IRQ_TYPE_LEVEL_LOW>;
+                       reset-gpios = <&gpioa 3 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <10>;
+                       reset-deassert-us = <35>;
+               };
+       };
+
+       memory@c0000000 {
+               device_type = "memory";
+               reg = <0xc0000000 0x10000000>;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               optee@ce000000 {
+                       reg = <0xce000000 0x02000000>;
+                       no-map;
+               };
+       };
+};
+
+&adc_1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&adc_1_pins_a>;
+       vdda-supply = <&reg_3v3>;
+       vref-supply = <&reg_3v3>;
+       status = "okay";
+};
+
+&adc1 {
+       status = "okay";
+
+       channel@0 { /* Fan current PC0*/
+               reg = <0>;
+               st,min-sample-time-ns = <10000>;  /* 10µs sampling time */
+       };
+       channel@11 { /* Fan voltage */
+               reg = <11>;
+               st,min-sample-time-ns = <10000>;  /* 10µs sampling time */
+       };
+       channel@15 { /* Supply voltage */
+               reg = <15>;
+               st,min-sample-time-ns = <10000>;  /* 10µs sampling time */
+       };
+};
+
+&dts {
+       status = "okay";
+};
+
+&ethernet1 {
+       status = "okay";
+       pinctrl-0 = <&ethernet1_rmii_pins_a>;
+       pinctrl-1 = <&ethernet1_rmii_sleep_pins_a>;
+       pinctrl-names = "default", "sleep";
+       phy-mode = "rmii";
+       phy-handle = <&phy0>;
+};
+
+&i2c1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&i2c1_pins_a>;
+       pinctrl-1 = <&i2c1_sleep_pins_a>;
+       clock-frequency = <100000>;
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       status = "okay";
+
+       board-sensor@48 {
+               compatible = "ti,tmp1075";
+               reg = <0x48>;
+               vs-supply = <&reg_3v3>;
+       };
+};
+
+&{i2c1_pins_a/pins} {
+       pinmux = <STM32_PINMUX('D', 3, AF5)>, /* I2C1_SCL */
+                <STM32_PINMUX('B', 8, AF4)>; /* I2C1_SDA */
+       bias-disable;
+       drive-open-drain;
+       slew-rate = <0>;
+};
+
+&{i2c1_sleep_pins_a/pins} {
+       pinmux = <STM32_PINMUX('D', 3, ANALOG)>, /* I2C1_SCL */
+                <STM32_PINMUX('B', 8, ANALOG)>; /* I2C1_SDA */
+};
+
+&iwdg2 {
+       timeout-sec = <32>;
+       status = "okay";
+};
+
+/* SD card without Card-detect */
+&sdmmc1 {
+       pinctrl-names = "default", "opendrain", "sleep";
+       pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_clk_pins_a>;
+       pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_clk_pins_a>;
+       pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
+       broken-cd;
+       no-sdio;
+       no-1-8-v;
+       st,neg-edge;
+       bus-width = <4>;
+       vmmc-supply = <&reg_3v3>;
+       status = "okay";
+};
+
+/* EMMC */
+&sdmmc2 {
+       pinctrl-names = "default", "opendrain", "sleep";
+       pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a &sdmmc2_clk_pins_a>;
+       pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_a &sdmmc2_clk_pins_a>;
+       pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_a>;
+       non-removable;
+       no-sd;
+       no-sdio;
+       no-1-8-v;
+       st,neg-edge;
+       mmc-ddr-3_3v;
+       bus-width = <8>;
+       vmmc-supply = <&reg_3v3>;
+       status = "okay";
+};
+
+&timers1 {
+       status = "okay";
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       pwm1: pwm {
+               pinctrl-0 = <&pwm1_pins_a>;
+               pinctrl-1 = <&pwm1_sleep_pins_a>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+};
+
+&timers4 {
+       status = "okay";
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       pwm2: pwm {
+               pinctrl-0 = <&pwm4_pins_a>;
+               pinctrl-1 = <&pwm4_sleep_pins_a>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+};
+
+/* Fan PWM */
+&timers5 {
+       status = "okay";
+
+       pwm3: pwm {
+               pinctrl-0 = <&pwm5_pins_a>;
+               pinctrl-1 = <&pwm5_sleep_pins_a>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+};
+
+&timers2 {
+       status = "okay";
+
+       timer@1 {
+               status = "okay";
+       };
+};
+
+&uart4 {
+       pinctrl-names = "default", "sleep", "idle";
+       pinctrl-0 = <&uart4_pins_a>;
+       pinctrl-1 = <&uart4_sleep_pins_a>;
+       pinctrl-2 = <&uart4_idle_pins_a>;
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       status = "okay";
+};
+
+&uart7 {
+       pinctrl-names = "default", "sleep", "idle";
+       pinctrl-0 = <&uart7_pins_a>;
+       pinctrl-1 = <&uart7_sleep_pins_a>;
+       pinctrl-2 = <&uart7_idle_pins_a>;
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       status = "okay";
+};
+
+&usart6 {
+       pinctrl-names = "default", "sleep", "idle";
+       pinctrl-0 = <&usart6_pins_a>;
+       pinctrl-1 = <&usart6_sleep_pins_a>;
+       pinctrl-2 = <&usart6_idle_pins_a>;
+       linux,rs485-enabled-at-boot-time;
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       status = "okay";
+};
+
+&pinctrl {
+       adc_1_pins_a: adc1-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('C', 0, ANALOG)>, /* ADC1 in0 */
+                                <STM32_PINMUX('C', 2, ANALOG)>, /* ADC1 in15 */
+                                <STM32_PINMUX('F', 13, ANALOG)>; /* ADC1 in11 */
+               };
+       };
+
+       ethernet1_rmii_pins_a: rmii-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('G', 13, AF11)>, /* ETH1_RMII_TXD0 */
+                                <STM32_PINMUX('G', 14, AF11)>, /* ETH1_RMII_TXD1 */
+                                <STM32_PINMUX('B', 11, AF11)>, /* ETH1_RMII_TX_EN */
+                                <STM32_PINMUX('A', 1, AF11)>;   /* ETH1_RMII_REF_CLK */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <2>;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('C', 4, AF11)>,  /* ETH1_RMII_RXD0 */
+                                <STM32_PINMUX('C', 5, AF11)>,  /* ETH1_RMII_RXD1 */
+                                <STM32_PINMUX('A', 7, AF11)>;  /* ETH1_RMII_CRS_DV */
+                       bias-disable;
+               };
+       };
+
+       ethernet1_rmii_sleep_pins_a: rmii-sleep-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('G', 13, ANALOG)>, /* ETH1_RMII_TXD0 */
+                                <STM32_PINMUX('G', 14, ANALOG)>, /* ETH1_RMII_TXD1 */
+                                <STM32_PINMUX('B', 11, ANALOG)>, /* ETH1_RMII_TX_EN */
+                                <STM32_PINMUX('C', 4, ANALOG)>,  /* ETH1_RMII_RXD0 */
+                                <STM32_PINMUX('C', 5, ANALOG)>,  /* ETH1_RMII_RXD1 */
+                                <STM32_PINMUX('A', 1, ANALOG)>,  /* ETH1_RMII_REF_CLK */
+                                <STM32_PINMUX('A', 7, ANALOG)>;  /* ETH1_RMII_CRS_DV */
+               };
+       };
+
+       pwm1_pins_a: pwm1-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('E', 9, AF1)>, /* TIM1_CH1 */
+                                <STM32_PINMUX('E', 11, AF1)>, /* TIM1_CH2 */
+                                <STM32_PINMUX('E', 13, AF1)>; /* TIM1_CH3 */
+                       bias-pull-down;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+       };
+
+       pwm1_sleep_pins_a: pwm1-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('E', 9, ANALOG)>, /* TIM1_CH1 */
+                                <STM32_PINMUX('E', 11, ANALOG)>, /* TIM1_CH2 */
+                                <STM32_PINMUX('E', 13, ANALOG)>; /* TIM1_CH3 */
+               };
+       };
+
+       pwm4_pins_a: pwm4-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 12, AF2)>, /* TIM4_CH1 */
+                                <STM32_PINMUX('B', 7, AF2)>, /* TIM4_CH2 */
+                                <STM32_PINMUX('D', 14, AF2)>; /* TIM4_CH3 */
+                       bias-pull-down;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+       };
+
+       pwm4_sleep_pins_a: pwm4-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 12, ANALOG)>, /* TIM4_CH1 */
+                                <STM32_PINMUX('B', 7, ANALOG)>, /* TIM4_CH2 */
+                                <STM32_PINMUX('D', 14, ANALOG)>; /* TIM4_CH3 */
+               };
+       };
+       pwm5_pins_a: pwm5-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 0, AF2)>; /* TIM5_CH1 */
+               };
+       };
+
+       pwm5_sleep_pins_a: pwm5-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 0, ANALOG)>; /* TIM5_CH1 */
+               };
+       };
+
+       uart7_pins_a: uart7-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('E', 8, AF7)>; /* UART_TX */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('E', 10, AF7)>; /* UART7_RX */
+                       bias-pull-up;
+               };
+       };
+
+       uart7_idle_pins_a: uart7-idle-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('E', 8, ANALOG)>; /* UART7_TX */
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('E', 10, AF7)>; /* UART7_RX */
+                       bias-pull-up;
+               };
+       };
+
+       uart7_sleep_pins_a: uart7-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('E', 8, ANALOG)>, /* UART7_TX */
+                                <STM32_PINMUX('E', 10, ANALOG)>; /* UART7_RX */
+               };
+       };
+
+       usart6_pins_a: usart6-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('F', 8, AF7)>, /* USART6_TX */
+                                <STM32_PINMUX('F', 10, AF7)>; /* USART6_DE */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('H', 11, AF7)>; /* USART6_RX */
+                       bias-disable;
+               };
+       };
+
+       usart6_idle_pins_a: usart6-idle-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('F', 8, ANALOG)>; /* USART6_TX */
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('F', 10, AF7)>; /* USART6_DE */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+               pins3 {
+                       pinmux = <STM32_PINMUX('H', 11, AF7)>; /* USART6_RX */
+                       bias-disable;
+               };
+       };
+
+       usart6_sleep_pins_a: usart6-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('F', 8, ANALOG)>, /* USART6_TX */
+                                <STM32_PINMUX('F', 10, ANALOG)>, /* USART6_DE */
+                                <STM32_PINMUX('H', 11, ANALOG)>; /* USART6_RX */
+               };
+       };
+};
index 853dc21..9902849 100644 (file)
        gpio-line-names = "", "", "", "",
                          "", "DHSBC_USB_PWR_CC1", "", "",
                          "", "", "", "DHSBC_nETH1_RST",
-                         "", "DHCOR_HW-CODING_0", "", "";
+                         "", "DHCOR_HW-CODING_0", "", "DHSBC_HW-CODE_2";
 };
 
 &gpiob {
        gpio-line-names = "", "", "", "",
                          "", "DHCOR_RAM-CODING_0", "", "",
                          "", "DHCOR_RAM-CODING_1", "", "",
-                         "", "", "", "";
+                         "", "DHSBC_HW-CODE_1", "", "";
 };
 
 &gpioe {
                          "DHSBC_ETH1_INTB", "", "", "DHSBC_ETH2_INTB";
 };
 
+&gpioh {
+       gpio-line-names = "", "", "", "DHSBC_HW-CODE_0",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "";
+};
+
 &gpioi {
        gpio-line-names = "DHCOR_RTC_nINT", "DHCOR_HW-CODING_1",
                          "DHCOR_BT_REG_ON", "DHCOR_PMIC_nINT",
        st33htph: tpm@0 {
                compatible = "st,st33htpm-spi", "tcg,tpm_tis-spi";
                reg = <0>;
+               interrupt-parent = <&gpioe>;
+               interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&gpioe 12 GPIO_ACTIVE_LOW>;
                spi-max-frequency = <24000000>;
        };
 };
                type = "micro";
        };
 };
+
+/* LDO2 is expansion connector 3V3 supply on STM32MP13xx DHCOR DHSBC rev.200 */
+&vdd_ldo2 {
+       regulator-always-on;
+       regulator-boot-on;
+       regulator-min-microvolt = <3300000>;
+       regulator-max-microvolt = <3300000>;
+};
+
+/* LDO5 is carrier board 3V3 supply on STM32MP13xx DHCOR DHSBC rev.200 */
+&vdd_sd {
+       regulator-always-on;
+       regulator-boot-on;
+       regulator-min-microvolt = <3300000>;
+       regulator-max-microvolt = <3300000>;
+};
index 95fafc5..40605ea 100644 (file)
                };
        };
 
+       /omit-if-no-ref/
+       adc1_in10_pins_a: adc1-in10-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('C', 0, ANALOG)>;
+               };
+       };
+
        /omit-if-no-ref/
        adc12_ain_pins_a: adc12-ain-0 {
                pins {
                };
        };
 
+       /omit-if-no-ref/
+       ethernet0_rmii_pins_d: rmii-3 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('B', 12, AF11)>, /* ETH1_RMII_TXD0 */
+                                <STM32_PINMUX('B', 13, AF11)>, /* ETH1_RMII_TXD1 */
+                                <STM32_PINMUX('B', 11, AF11)>, /* ETH1_RMII_TX_EN */
+                                <STM32_PINMUX('A', 1, AF11)>, /* ETH1_RMII_REF_CLK */
+                                <STM32_PINMUX('A', 2, AF11)>, /* ETH1_MDIO */
+                                <STM32_PINMUX('C', 1, AF11)>; /* ETH1_MDC */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <2>;
+               };
+
+               pins2 {
+                       pinmux = <STM32_PINMUX('C', 4, AF11)>, /* ETH1_RMII_RXD0 */
+                                <STM32_PINMUX('C', 5, AF11)>, /* ETH1_RMII_RXD1 */
+                                <STM32_PINMUX('A', 7, AF11)>; /* ETH1_RMII_CRS_DV */
+                       bias-disable;
+               };
+       };
+
+       /omit-if-no-ref/
+       ethernet0_rmii_sleep_pins_d: rmii-sleep-3 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('B', 12, ANALOG)>, /* ETH1_RMII_TXD0 */
+                                <STM32_PINMUX('B', 13, ANALOG)>, /* ETH1_RMII_TXD1 */
+                                <STM32_PINMUX('B', 11, ANALOG)>, /* ETH1_RMII_TX_EN */
+                                <STM32_PINMUX('A', 2, ANALOG)>, /* ETH1_MDIO */
+                                <STM32_PINMUX('C', 1, ANALOG)>, /* ETH1_MDC */
+                                <STM32_PINMUX('C', 4, ANALOG)>, /* ETH1_RMII_RXD0 */
+                                <STM32_PINMUX('C', 5, ANALOG)>, /* ETH1_RMII_RXD1 */
+                                <STM32_PINMUX('A', 1, ANALOG)>, /* ETH1_RMII_REF_CLK */
+                                <STM32_PINMUX('A', 7, ANALOG)>; /* ETH1_RMII_CRS_DV */
+               };
+       };
+
        /omit-if-no-ref/
        fmc_pins_a: fmc-0 {
                pins1 {
                };
        };
 
+       /omit-if-no-ref/
+       i2c1_pins_c: i2c1-2 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 12, AF5)>, /* I2C1_SCL */
+                                <STM32_PINMUX('D', 13, AF5)>; /* I2C1_SDA */
+                       bias-disable;
+                       drive-open-drain;
+                       slew-rate = <0>;
+               };
+       };
+
+       /omit-if-no-ref/
+       i2c1_sleep_pins_c: i2c1-sleep-2 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 12, ANALOG)>, /* I2C1_SCL */
+                                <STM32_PINMUX('D', 13, ANALOG)>; /* I2C1_SDA */
+               };
+       };
+
        /omit-if-no-ref/
        i2c2_pins_a: i2c2-0 {
                pins {
                };
        };
 
+       /omit-if-no-ref/
+       i2s1_pins_a: i2s1-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 6, AF5)>, /* I2S2_SDI */
+                                <STM32_PINMUX('A', 4, AF5)>, /* I2S2_WS */
+                                <STM32_PINMUX('A', 5, AF5)>; /* I2S2_CK */
+                       slew-rate = <0>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+       };
+
+       /omit-if-no-ref/
+       i2s1_sleep_pins_a: i2s1-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 6, ANALOG)>, /* I2S2_SDI */
+                                <STM32_PINMUX('A', 4, ANALOG)>, /* I2S2_WS */
+                                <STM32_PINMUX('A', 5, ANALOG)>; /* I2S2_CK */
+               };
+       };
+
        /omit-if-no-ref/
        i2s2_pins_a: i2s2-0 {
                pins {
                };
        };
 
+       /omit-if-no-ref/
+       pwm1_pins_d: pwm1-3 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 0, AF2)>; /* TIM5_CH1 */
+                       bias-pull-down;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+       };
+
+       /omit-if-no-ref/
+       pwm1_sleep_pins_d: pwm1-sleep-3 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 0, ANALOG)>;
+               };
+       };
+
        /omit-if-no-ref/
        pwm2_pins_a: pwm2-0 {
                pins {
                };
        };
 
+       /omit-if-no-ref/
+       sdmmc2_b4_pins_c: sdmmc2-b4-2 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC2_D0 */
+                                <STM32_PINMUX('B', 7, AF10)>, /* 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;
+               };
+       };
+
+       /omit-if-no-ref/
+       sdmmc2_b4_od_pins_c: sdmmc2-b4-od-2 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC2_D0 */
+                                <STM32_PINMUX('B', 7, AF10)>, /* 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;
+               };
+       };
+
+       /omit-if-no-ref/
+       sdmmc2_b4_sleep_pins_c: sdmmc2-b4-sleep-2 {
+               pins {
+                       pinmux = <STM32_PINMUX('B', 14, ANALOG)>, /* SDMMC2_D0 */
+                                <STM32_PINMUX('B', 7, 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 */
+               };
+       };
+
        /omit-if-no-ref/
        sdmmc2_d47_pins_a: sdmmc2-d47-0 {
                pins {
                };
        };
 
+       /omit-if-no-ref/
+       sdmmc3_b4_pins_c: sdmmc3-b4-2 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('D', 1, AF10)>, /* SDMMC3_D0 */
+                                <STM32_PINMUX('D', 4, AF10)>, /* SDMMC3_D1 */
+                                <STM32_PINMUX('D', 5, AF10)>, /* SDMMC3_D2 */
+                                <STM32_PINMUX('D', 7, AF10)>, /* SDMMC3_D3 */
+                                <STM32_PINMUX('D', 0, AF10)>; /* SDMMC3_CMD */
+                       slew-rate = <1>;
+                       drive-push-pull;
+                       bias-pull-up;
+               };
+
+               pins2 {
+                       pinmux = <STM32_PINMUX('G', 15, AF10)>; /* SDMMC3_CK */
+                       slew-rate = <2>;
+                       drive-push-pull;
+                       bias-pull-up;
+               };
+       };
+
+       /omit-if-no-ref/
+       sdmmc3_b4_od_pins_c: sdmmc3-b4-od-2 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('D', 1, AF10)>, /* SDMMC3_D0 */
+                                <STM32_PINMUX('D', 4, AF10)>, /* SDMMC3_D1 */
+                                <STM32_PINMUX('D', 5, AF10)>, /* SDMMC3_D2 */
+                                <STM32_PINMUX('D', 7, AF10)>; /* SDMMC3_D3 */
+                       slew-rate = <1>;
+                       drive-push-pull;
+                       bias-pull-up;
+               };
+
+               pins2 {
+                       pinmux = <STM32_PINMUX('G', 15, AF10)>; /* SDMMC3_CK */
+                       slew-rate = <2>;
+                       drive-push-pull;
+                       bias-pull-up;
+               };
+
+               pins3 {
+                       pinmux = <STM32_PINMUX('D', 0, AF10)>; /* SDMMC3_CMD */
+                       slew-rate = <1>;
+                       drive-open-drain;
+                       bias-pull-up;
+               };
+       };
+
+       /omit-if-no-ref/
+       sdmmc3_b4_sleep_pins_c: sdmmc3-b4-sleep-2 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 1, ANALOG)>, /* SDMMC3_D0 */
+                                <STM32_PINMUX('D', 4, ANALOG)>, /* SDMMC3_D1 */
+                                <STM32_PINMUX('D', 5, ANALOG)>, /* SDMMC3_D2 */
+                                <STM32_PINMUX('D', 7, ANALOG)>, /* SDMMC3_D3 */
+                                <STM32_PINMUX('G', 15, ANALOG)>, /* SDMMC3_CK */
+                                <STM32_PINMUX('D', 0, ANALOG)>; /* SDMMC3_CMD */
+               };
+       };
+
        /omit-if-no-ref/
        spdifrx_pins_a: spdifrx-0 {
                pins {
                };
        };
 
+       /omit-if-no-ref/
+       uart4_pins_e: uart4-4 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('G', 11, AF6)>; /* UART4_TX */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+
+               pins2 {
+                       pinmux = <STM32_PINMUX('B', 8, AF8)>; /* UART4_RX */
+                       bias-disable;
+               };
+       };
+
+       /omit-if-no-ref/
+       uart4_idle_pins_e: uart4-idle-4 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('G', 11, ANALOG)>; /* UART4_TX */
+               };
+
+               pins2 {
+                       pinmux = <STM32_PINMUX('B', 8, AF8)>; /* UART4_RX */
+                       bias-disable;
+               };
+       };
+
+       /omit-if-no-ref/
+       uart4_sleep_pins_e: uart4-sleep-4 {
+               pins {
+                       pinmux = <STM32_PINMUX('G', 11, ANALOG)>, /* UART4_TX */
+                                <STM32_PINMUX('B', 8, ANALOG)>; /* UART4_RX */
+               };
+       };
+
        /omit-if-no-ref/
        uart5_pins_a: uart5-0 {
                pins1 {
                };
        };
 
+       /omit-if-no-ref/
+       uart7_pins_d: uart7-3 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('F', 7, AF7)>, /* UART7_TX */
+                                <STM32_PINMUX('F', 8, AF7)>; /* UART7_RTS */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+
+               pins2 {
+                       pinmux = <STM32_PINMUX('E', 7, AF7)>, /* UART7_RX */
+                                <STM32_PINMUX('F', 9, AF7)>; /* UART7_CTS */
+                       bias-disable;
+               };
+       };
+
        /omit-if-no-ref/
        uart8_pins_a: uart8-0 {
                pins1 {
                };
        };
 
+       /omit-if-no-ref/
+       i2c6_pins_b: i2c6-1 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 11, AF2)>, /* I2C6_SCL */
+                                <STM32_PINMUX('A', 12, AF2)>; /* I2C6_SDA */
+                       bias-disable;
+                       drive-open-drain;
+                       slew-rate = <0>;
+               };
+       };
+
+       /omit-if-no-ref/
+       i2c6_sleep_pins_b: i2c6-sleep-1 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 11, ANALOG)>, /* I2C6_SCL */
+                                <STM32_PINMUX('A', 12, ANALOG)>; /* I2C6_SDA */
+               };
+       };
+
        /omit-if-no-ref/
        spi1_pins_a: spi1-0 {
                pins1 {
index b9a87fb..0daa8ff 100644 (file)
                                st,syscon = <&syscfg 0x4>;
                                snps,mixed-burst;
                                snps,pbl = <2>;
-                               snps,en-tx-lpi-clockgating;
                                snps,axi-config = <&stmmac_axi_config_0>;
                                snps,tso;
                                access-controllers = <&etzpc 94>;
diff --git a/src/arm/st/stm32mp151c-plyaqm.dts b/src/arm/st/stm32mp151c-plyaqm.dts
new file mode 100644 (file)
index 0000000..39a3211
--- /dev/null
@@ -0,0 +1,376 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/dts-v1/;
+
+#include <arm/st/stm32mp151.dtsi>
+#include <arm/st/stm32mp15xc.dtsi>
+#include <arm/st/stm32mp15-pinctrl.dtsi>
+#include <arm/st/stm32mp15xxad-pinctrl.dtsi>
+#include <arm/st/stm32mp15-scmi.dtsi>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       model = "Plymovent AQM board";
+       compatible = "ply,plyaqm", "st,stm32mp151";
+
+       aliases {
+               ethernet0 = &ethernet0;
+               serial0 = &uart4;
+               serial1 = &uart7;
+       };
+
+       codec {
+               compatible = "invensense,ics43432";
+
+               port {
+                       codec_endpoint: endpoint {
+                               remote-endpoint = <&i2s1_endpoint>;
+                               dai-format = "i2s";
+                       };
+               };
+       };
+
+       firmware {
+               optee {
+                       compatible = "linaro,optee-tz";
+                       method = "smc";
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       gpios = <&gpioa 3 GPIO_ACTIVE_HIGH>; /* WHITE_EN */
+                       color = <LED_COLOR_ID_WHITE>;
+                       default-state = "on";
+               };
+       };
+
+       v3v3: fixed-regulator-v3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "v3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       v5v_sw: fixed-regulator-v5sw {
+               compatible = "regulator-fixed";
+               regulator-name = "5v-switched";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpioe 10 GPIO_ACTIVE_HIGH>; /* 5V_SWITCHED_EN */
+               startup-delay-us = <100000>;
+               enable-active-high;
+               regulator-boot-on;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               optee@cfd00000 {
+                       reg = <0xcfd00000 0x300000>;
+                       no-map;
+               };
+       };
+
+       sound {
+               compatible = "audio-graph-card";
+               label = "STM32MP15";
+               dais = <&i2s1_port>;
+       };
+
+       wifi_pwrseq: wifi-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpioe 12 GPIO_ACTIVE_LOW>; /* WLAN_REG_ON */
+       };
+};
+
+&adc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&adc1_in10_pins_a>;
+       vdda-supply = <&v3v3>;
+       vref-supply = <&v3v3>;
+       status = "okay";
+
+       adc@0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "okay";
+
+               channel@10 { /* NTC */
+                       reg = <10>;
+                       st,min-sample-time-ns = <10000>;  /* 10µs sampling time */
+               };
+       };
+};
+
+&cpu0 {
+       clocks = <&scmi_clk CK_SCMI_MPU>;
+};
+
+&cryp1 {
+       clocks = <&scmi_clk CK_SCMI_CRYP1>;
+       resets = <&scmi_reset RST_SCMI_CRYP1>;
+       status = "okay";
+};
+
+&ethernet0 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&ethernet0_rmii_pins_d>;
+       pinctrl-1 = <&ethernet0_rmii_sleep_pins_d>;
+       phy-mode = "rmii";
+       max-speed = <100>;
+       phy-handle = <&ethphy0>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "snps,dwmac-mdio";
+
+               /* KSZ8081RNA PHY */
+               ethphy0: ethernet-phy@0 {
+                       reg = <0>;
+                       interrupts-extended = <&gpiob 0 IRQ_TYPE_LEVEL_LOW>;
+                       reset-gpios = <&gpiob 1 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <10000>;
+                       reset-deassert-us = <300>;
+               };
+       };
+};
+
+&gpioa {
+       gpio-line-names =
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "HWID_PL_N", "HWID_CP", "";
+};
+
+&gpiob {
+       gpio-line-names =
+               "", "", "", "", "", "", "LED_LATCH", "",
+               "", "RELAY1_EN", "", "", "", "", "", "";
+};
+
+&gpioc {
+       gpio-line-names =
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "HWID_Q7", "", "";
+};
+
+&gpioe {
+       gpio-line-names =
+               "", "", "", "", "RELAY2_EN", "", "", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&gpiog {
+       gpio-line-names =
+               "", "", "", "", "", "", "", "SW1",
+               "", "", "", "", "", "", "", "";
+};
+
+&gpioz {
+       clocks = <&scmi_clk CK_SCMI_GPIOZ>;
+};
+
+&hash1 {
+       clocks = <&scmi_clk CK_SCMI_HASH1>;
+       resets = <&scmi_reset RST_SCMI_HASH1>;
+};
+
+&i2c1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&i2c1_pins_c>;
+       pinctrl-1 = <&i2c1_sleep_pins_c>;
+       i2c-scl-rising-time-ns = <185>;
+       i2c-scl-falling-time-ns = <20>;
+       status = "okay";
+       /delete-property/dmas;
+       /delete-property/dma-names;
+};
+
+&i2c4 {
+       clocks = <&scmi_clk CK_SCMI_I2C4>;
+       resets = <&scmi_reset RST_SCMI_I2C4>;
+};
+
+&i2c6 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&i2c6_pins_b>;
+       pinctrl-1 = <&i2c6_sleep_pins_b>;
+       i2c-scl-rising-time-ns = <185>;
+       i2c-scl-falling-time-ns = <20>;
+       clocks = <&scmi_clk CK_SCMI_I2C6>;
+       resets = <&scmi_reset RST_SCMI_I2C6>;
+       status = "okay";
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       pressure-sensor@47 {
+               compatible = "bosch,bmp580";
+               reg = <0x47>;
+               vdda-supply = <&v5v_sw>;
+               vddd-supply = <&v5v_sw>;
+       };
+
+       co2-sensor@62 {
+               compatible = "sensirion,scd41";
+               reg = <0x62>;
+               vdd-supply = <&v5v_sw>;
+       };
+
+       pm-sensor@69 {
+               compatible = "sensirion,sps30";
+               reg = <0x69>;
+       };
+};
+
+&i2s1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&i2s1_pins_a>;
+       pinctrl-1 = <&i2s1_sleep_pins_a>;
+       clocks = <&rcc SPI1>, <&rcc SPI1_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
+       clock-names = "pclk", "i2sclk", "x8k", "x11k";
+       #clock-cells = <0>; /* Set I2S2 as master clock provider */
+       status = "okay";
+
+       i2s1_port: port {
+               i2s1_endpoint: endpoint {
+                       format = "i2s";
+                       mclk-fs = <256>;
+                       remote-endpoint = <&codec_endpoint>;
+               };
+       };
+};
+
+&iwdg2 {
+       clocks = <&rcc IWDG2>, <&scmi_clk CK_SCMI_LSI>;
+       status = "okay";
+};
+
+&m4_rproc {
+       /delete-property/ st,syscfg-holdboot;
+       resets = <&scmi_reset RST_SCMI_MCU>,
+                <&scmi_reset RST_SCMI_MCU_HOLD_BOOT>;
+       reset-names =  "mcu_rst", "hold_boot";
+};
+
+&mdma1 {
+       resets = <&scmi_reset RST_SCMI_MDMA>;
+};
+
+&rcc {
+       compatible = "st,stm32mp1-rcc-secure", "syscon";
+       clock-names = "hse", "hsi", "csi", "lse", "lsi";
+       clocks = <&scmi_clk CK_SCMI_HSE>,
+                <&scmi_clk CK_SCMI_HSI>,
+                <&scmi_clk CK_SCMI_CSI>,
+                <&scmi_clk CK_SCMI_LSE>,
+                <&scmi_clk CK_SCMI_LSI>;
+};
+
+&rng1 {
+       clocks = <&scmi_clk CK_SCMI_RNG1>;
+       resets = <&scmi_reset RST_SCMI_RNG1>;
+       status = "okay";
+};
+
+&rtc {
+       clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>;
+};
+
+/* SD card without Card-detect */
+&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>;
+       broken-cd;
+       no-sdio;
+       no-1-8-v;
+       st,neg-edge;
+       bus-width = <4>;
+       vmmc-supply = <&v3v3>;
+       status = "okay";
+};
+
+/* EMMC */
+&sdmmc2 {
+       pinctrl-names = "default", "opendrain", "sleep";
+       pinctrl-0 = <&sdmmc2_b4_pins_c &sdmmc2_d47_pins_b>;
+       pinctrl-1 = <&sdmmc2_b4_od_pins_c &sdmmc2_d47_pins_b>;
+       pinctrl-2 = <&sdmmc2_b4_sleep_pins_c &sdmmc2_d47_sleep_pins_b>;
+       non-removable;
+       no-sd;
+       no-sdio;
+       no-1-8-v;
+       st,neg-edge;
+       bus-width = <8>;
+       vmmc-supply = <&v3v3>;
+       status = "okay";
+};
+
+/* Wifi */
+&sdmmc3 {
+       pinctrl-names = "default", "opendrain", "sleep";
+       pinctrl-0 = <&sdmmc3_b4_pins_c>;
+       pinctrl-1 = <&sdmmc3_b4_od_pins_c>;
+       pinctrl-2 = <&sdmmc3_b4_sleep_pins_c>;
+       non-removable;
+       st,neg-edge;
+       bus-width = <4>;
+       vmmc-supply = <&v3v3>;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       wifi@1 {
+               reg = <1>;
+               compatible = "brcm,bcm4329-fmac";
+       };
+};
+
+&timers5 {
+       status = "okay";
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       pwm {
+               pinctrl-0 = <&pwm1_pins_d>;
+               pinctrl-1 = <&pwm1_sleep_pins_d>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+};
+
+&uart4 {
+       pinctrl-names = "default", "sleep", "idle";
+       pinctrl-0 = <&uart4_pins_e>;
+       pinctrl-1 = <&uart4_idle_pins_e>;
+       pinctrl-2 = <&uart4_sleep_pins_e>;
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       status = "okay";
+};
+
+&uart7 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart7_pins_d>;
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               shutdown-gpios = <&gpioe 11 GPIO_ACTIVE_HIGH>; /* BT_REG_ON */
+               max-speed = <4000000>;
+               vbat-supply = <&v3v3>;
+               vddio-supply = <&v3v3>;
+               interrupt-parent = <&gpiog>;
+               interrupts = <12 IRQ_TYPE_EDGE_RISING>; /* BT_HOST_WAKE */
+               interrupt-names = "host-wakeup";
+       };
+};
diff --git a/src/arm/st/stm32mp153c-lxa-fairytux2-gen1.dts b/src/arm/st/stm32mp153c-lxa-fairytux2-gen1.dts
new file mode 100644 (file)
index 0000000..3a0e842
--- /dev/null
@@ -0,0 +1,103 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)
+/*
+ * Copyright (C) 2024 Leonard Göhrs, Pengutronix
+ */
+
+/dts-v1/;
+
+#include "stm32mp153c-lxa-fairytux2.dtsi"
+
+/ {
+       model = "Linux Automation GmbH FairyTux 2 Gen 1";
+       compatible = "lxa,stm32mp153c-fairytux2-gen1", "oct,stm32mp153x-osd32", "st,stm32mp153";
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               button-left {
+                       label = "USER_BTN1";
+                       linux,code = <KEY_ESC>;
+                       gpios = <&gpioi 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+               };
+
+               button-right {
+                       label = "USER_BTN2";
+                       linux,code = <KEY_HOME>;
+                       gpios = <&gpioe 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+               };
+       };
+};
+
+&gpiof {
+       gpio-line-names = "GPIO1", "GPIO2", "", "", "",                 /*  0 */
+                         "", "", "", "", "",                           /*  5 */
+                         "", "", "", "", "",                           /* 10 */
+                         "";                                           /* 15 */
+};
+
+&gpioh {
+       gpio-line-names = "", "", "", "", "LCD_RESET",                  /*  0 */
+                         "", "", "", "", "",                           /*  5 */
+                         "", "", "", "GPIO3", "",                      /* 10 */
+                         "";                                           /* 15 */
+};
+
+&gpioi {
+       gpio-line-names = "", "", "", "", "",                           /*  0 */
+                         "", "", "", "ETH_", "",                       /*  5 */
+                         "", "USER_BTN1";                              /* 10 */
+};
+
+&i2c1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&i2c1_pins_b>;
+       pinctrl-1 = <&i2c1_sleep_pins_b>;
+       status = "okay";
+
+       io_board_gpio: gpio@20 {
+               compatible = "ti,tca6408";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               vcc-supply = <&v3v3_hdmi>;
+               gpio-line-names = "LED1_GA_YK", "LED2_GA_YK", "LED1_GK_YA", "LED2_GK_YA",
+                                 "RS485_EN", "RS485_120R", "", "CAN_120R";
+       };
+};
+
+&led_controller_io {
+       /*
+        * led-2 and led-3 are internally connected antiparallel to one
+        * another inside the ethernet jack like this:
+        * GPIO1 ---+---|led-2|>--+--- GPIO3
+        *          +--<|led-3|---+
+        * E.g. only one of the LEDs can be illuminated at a time while
+        * the other output must be driven low.
+        * This should likely be implemented using a multi color LED
+        * driver for antiparallel LEDs.
+        */
+       led-2 {
+               color = <LED_COLOR_ID_GREEN>;
+               function = LED_FUNCTION_ACTIVITY;
+               gpios = <&io_board_gpio 1 GPIO_ACTIVE_HIGH>;
+       };
+
+       led-3 {
+               color = <LED_COLOR_ID_ORANGE>;
+               function = LED_FUNCTION_ACTIVITY;
+               gpios = <&io_board_gpio 3 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&usart3 {
+       /*
+        * On Gen 1 FairyTux 2 only RTS can be used and not CTS as well,
+        * Because pins PD11 (CTS) and PI11 (USER_BTN1) share the same
+        * interrupt and only one of them can be used at a time.
+        */
+       rts-gpios = <&gpiod 12 GPIO_ACTIVE_LOW>;
+};
+
+&usbotg_hs {
+       dr_mode = "peripheral";
+};
diff --git a/src/arm/st/stm32mp153c-lxa-fairytux2-gen2.dts b/src/arm/st/stm32mp153c-lxa-fairytux2-gen2.dts
new file mode 100644 (file)
index 0000000..66e6da9
--- /dev/null
@@ -0,0 +1,147 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)
+/*
+ * Copyright (C) 2024 Leonard Göhrs, Pengutronix
+ */
+
+/dts-v1/;
+
+#include "stm32mp153c-lxa-fairytux2.dtsi"
+
+/ {
+       model = "Linux Automation GmbH FairyTux 2 Gen 2";
+       compatible = "lxa,stm32mp153c-fairytux2-gen2", "oct,stm32mp153x-osd32", "st,stm32mp153";
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               button-left {
+                       label = "USER_BTN1";
+                       linux,code = <KEY_ESC>;
+                       gpios = <&gpioi 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+               };
+
+               button-right {
+                       label = "USER_BTN2";
+                       linux,code = <KEY_HOME>;
+                       gpios = <&gpioe 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+               };
+       };
+};
+
+&gpiof {
+       gpio-line-names = "", "", "", "", "",                           /*  0 */
+                         "", "", "", "", "",                           /*  5 */
+                         "", "", "", "", "",                           /* 10 */
+                         "";                                           /* 15 */
+};
+
+&gpioh {
+       gpio-line-names = "", "", "", "", "LCD_RESET",                  /*  0 */
+                         "", "", "", "", "",                           /*  5 */
+                         "", "", "GPIO1", "GPIO_INT", "",              /* 10 */
+                         "";                                           /* 15 */
+};
+
+&gpioi {
+       gpio-line-names = "GPIO2", "", "", "", "",                      /*  0 */
+                         "", "", "", "ETH_", "",                       /*  5 */
+                         "", "USER_BTN1";                              /* 10 */
+};
+
+&i2c1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&i2c1_pins_b>;
+       pinctrl-1 = <&i2c1_sleep_pins_b>;
+       status = "okay";
+
+       io_board_gpio: gpio@20 {
+               compatible = "ti,tca6408";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&gpioh>;
+               interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-controller;
+               pinctrl-names = "default";
+               pinctrl-0 = <&board_tca6408_pins>;
+               #interrupt-cells = <2>;
+               vcc-supply = <&v3v3_hdmi>;
+               gpio-line-names = "LED1_GA_YK", "LED2_GA_YK", "LED1_GK_YA", "USB_CC_ALERT",
+                                 "RS485_EN", "RS485_120R", "USB_CC_RESET", "CAN_120R";
+       };
+
+       usb_c: typec@28 {
+               compatible = "st,stusb1600";
+               reg = <0x28>;
+               interrupt-parent = <&io_board_gpio>;
+               interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+               vdd-supply = <&reg_5v>;
+               vsys-supply = <&v3v3_hdmi>;
+
+               connector {
+                       compatible = "usb-c-connector";
+                       label = "USB-C";
+                       power-role = "dual";
+                       typec-power-opmode = "default";
+
+                       port {
+                               con_usbotg_hs_ep: endpoint {
+                                       remote-endpoint = <&usbotg_hs_ep>;
+                               };
+                       };
+               };
+       };
+
+       temperature-sensor@48 {
+               compatible = "national,lm75a";
+               reg = <0x48>;
+               /*
+                * The sensor itself is powered by a voltage divider from the
+                * always-on 5V supply.
+                * The required pull-up resistors however are on v3v3_hdmi.
+                */
+               vs-supply = <&v3v3_hdmi>;
+       };
+
+       io_board_eeprom: eeprom@56 {
+               compatible = "atmel,24c04";
+               reg = <0x56>;
+               vcc-supply = <&v3v3_hdmi>;
+       };
+};
+
+&rtc {
+       status = "okay";
+};
+
+&led_controller_io {
+       led-2 {
+               color = <LED_COLOR_ID_ORANGE>;
+               function = LED_FUNCTION_ACTIVITY;
+               gpios = <&io_board_gpio 1 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&usart3 {
+       rts-gpios = <&gpiod 12 GPIO_ACTIVE_LOW>;
+       cts-gpios = <&gpiod 11 GPIO_ACTIVE_LOW>;
+};
+
+&usbotg_hs {
+       usb-role-switch;
+
+       port {
+               usbotg_hs_ep: endpoint {
+                       remote-endpoint = <&con_usbotg_hs_ep>;
+               };
+       };
+};
+
+&pinctrl {
+       board_tca6408_pins: stusb1600-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('H', 13, GPIO)>;
+                       bias-pull-up;
+               };
+       };
+};
diff --git a/src/arm/st/stm32mp153c-lxa-fairytux2.dtsi b/src/arm/st/stm32mp153c-lxa-fairytux2.dtsi
new file mode 100644 (file)
index 0000000..9eeb9d6
--- /dev/null
@@ -0,0 +1,397 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)
+/*
+ * Copyright (C) 2020 STMicroelectronics - All Rights Reserved
+ * Copyright (C) 2021 Rouven Czerwinski, Pengutronix
+ * Copyright (C) 2023, 2024 Leonard Göhrs, Pengutronix
+ */
+
+#include "stm32mp153.dtsi"
+#include "stm32mp15xc.dtsi"
+#include "stm32mp15xx-osd32.dtsi"
+#include "stm32mp15xxac-pinctrl.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pwm/pwm.h>
+
+/ {
+       aliases {
+               can0 = &m_can1;
+               ethernet0 = &ethernet0;
+               i2c0 = &i2c1;
+               i2c1 = &i2c4;
+               mmc1 = &sdmmc2;
+               serial0 = &uart4;
+               serial1 = &usart3;
+               spi0 = &spi4;
+       };
+
+       chosen {
+               stdout-path = &uart4;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               power-supply = <&v3v3>;
+
+               brightness-levels = <0 31 63 95 127 159 191 223 255>;
+               default-brightness-level = <7>;
+               pwms = <&led_pwm 3 1000000 0>;
+       };
+
+       led-controller-cpu {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_HEARTBEAT;
+                       gpios = <&gpioa 13 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       led_controller_io: led-controller-io {
+               compatible = "gpio-leds";
+
+               /*
+                * led-0 and led-1 are internally connected antiparallel to one
+                * another inside the ethernet jack like this:
+                * GPIO0 ---+---|led-0|>--+--- GPIO2
+                *          +--<|led-1|---+
+                * E.g. only one of the LEDs can be illuminated at a time while
+                * the other output must be driven low.
+                * This should likely be implemented using a multi color LED
+                * driver for antiparallel LEDs.
+                */
+               led-0 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_LAN;
+                       gpios = <&io_board_gpio 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-1 {
+                       color = <LED_COLOR_ID_ORANGE>;
+                       function = LED_FUNCTION_LAN;
+                       gpios = <&io_board_gpio 2 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       reg_5v: regulator-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "5V";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       reg_1v2: regulator-1v2 {
+               compatible = "regulator-fixed";
+               regulator-name = "1V2";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               regulator-always-on;
+               vin-supply = <&reg_5v>;
+       };
+};
+
+baseboard_eeprom: &sip_eeprom {
+};
+
+&crc1 {
+       status = "okay";
+};
+
+&cryp1 {
+       status = "okay";
+};
+
+&dts {
+       status = "okay";
+};
+
+&ethernet0 {
+       assigned-clocks = <&rcc ETHCK_K>, <&rcc PLL4_P>;
+       assigned-clock-parents = <&rcc PLL4_P>;
+       assigned-clock-rates = <125000000>; /* Clock PLL4 to 750Mhz in ATF */
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&ethernet0_rgmii_pins_b>;
+       pinctrl-1 = <&ethernet0_rgmii_sleep_pins_b>;
+
+       st,eth-clk-sel;
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethphy>;
+       status = "okay";
+
+       mdio {
+               compatible = "snps,dwmac-mdio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy: ethernet-phy@3 { /* KSZ9031RN */
+                       reg = <3>;
+                       reset-gpios = <&gpioe 11 GPIO_ACTIVE_LOW>; /* ETH_RST# */
+                       interrupt-parent = <&gpioa>;
+                       interrupts = <6 IRQ_TYPE_EDGE_FALLING>; /* ETH_MDINT# */
+                       reset-assert-us = <10000>;
+                       reset-deassert-us = <300>;
+                       micrel,force-master;
+               };
+       };
+};
+
+&gpioa {
+       gpio-line-names = "", "", "", "", "",                           /*  0 */
+                         "", "ETH_INT", "", "", "",                    /*  5 */
+                         "", "", "", "BOOTROM_LED", "",                /* 10 */
+                         "";                                           /* 15 */
+};
+
+&gpiob {
+       gpio-line-names = "", "", "", "", "",                           /*  0 */
+                         "", "", "", "", "",                           /*  5 */
+                         "", "", "", "", "",                           /* 10 */
+                         "";                                           /* 15 */
+};
+
+&gpioc {
+       gpio-line-names = "", "", "", "", "",                           /*  0 */
+                         "", "", "", "", "",                           /*  5 */
+                         "", "";                                       /* 10 */
+};
+
+&gpiod {
+       gpio-line-names = "", "", "", "", "",                           /*  0 */
+                         "", "", "LCD_TE", "", "",                     /*  5 */
+                         "LCD_DC", "", "", "", "",                     /* 10 */
+                         "";                                           /* 15 */
+};
+
+&gpioe {
+       gpio-line-names = "LCD_CS", "", "", "", "",                     /*  0 */
+                         "", "", "", "", "",                           /*  5 */
+                         "", "", "", "", "",                           /* 10 */
+                         "";                                           /* 15 */
+};
+
+&gpiof {
+       gpio-line-names = "GPIO1", "GPIO2", "", "", "",                 /*  0 */
+                         "", "", "", "", "",                           /*  5 */
+                         "", "", "", "", "",                           /* 10 */
+                         "";                                           /* 15 */
+};
+
+&gpiog {
+       gpio-line-names = "", "", "", "", "",                           /*  0 */
+                         "", "", "", "", "",                           /*  5 */
+                         "", "", "", "", "",                           /* 10 */
+                         "";                                           /* 15 */
+};
+
+&gpioz {
+       gpio-line-names = "HWID0", "HWID1", "HWID2", "HWID3", "",       /*  0 */
+                         "", "HWID4", "HWID5";                         /*  5 */
+};
+
+&hash1 {
+       status = "okay";
+};
+
+&iwdg2 {
+       timeout-sec = <8>;
+       status = "okay";
+};
+
+&m_can1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&m_can1_pins_b>;
+       pinctrl-1 = <&m_can1_sleep_pins_b>;
+       status = "okay";
+       termination-gpios = <&io_board_gpio 7 GPIO_ACTIVE_HIGH>;
+       termination-ohms = <120>;
+};
+
+&pmic {
+       regulators {
+               buck1-supply = <&reg_5v>;       /* VIN */
+               buck2-supply = <&reg_5v>;       /* VIN */
+               buck3-supply = <&reg_5v>;       /* VIN */
+               buck4-supply = <&reg_5v>;       /* VIN */
+               ldo2-supply = <&reg_5v>;        /* PMIC_LDO25IN */
+               ldo4-supply = <&reg_5v>;        /* VIN */
+               ldo5-supply = <&reg_5v>;        /* PMIC_LDO25IN */
+               vref_ddr-supply = <&reg_5v>;    /* VIN */
+               boost-supply = <&reg_5v>;       /* PMIC_BSTIN */
+               pwr_sw2-supply = <&bst_out>;    /* PMIC_SWIN */
+       };
+};
+
+&pwr_regulators {
+       vdd-supply = <&vdd>;
+       vdd_3v3_usbfs-supply = <&vdd_usb>;
+};
+
+&sdmmc2 {
+       pinctrl-names = "default", "opendrain", "sleep";
+       pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_b>;
+       pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_b>;
+       pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_b>;
+       vmmc-supply = <&v3v3>;
+
+       bus-width = <8>;
+       mmc-ddr-3_3v;
+       no-1-8-v;
+       non-removable;
+       no-sd;
+       no-sdio;
+       st,neg-edge;
+
+       status = "okay";
+};
+
+&spi4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi4_pins_a>;
+       cs-gpios = <&gpioe 0 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       lcd: display@0 {
+               compatible = "shineworld,lh133k", "panel-mipi-dbi-spi";
+               reg = <0>;
+               power-supply = <&v3v3>;
+               io-supply = <&v3v3>;
+               backlight = <&backlight>;
+               dc-gpios = <&gpiod 10 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&gpioh 4 GPIO_ACTIVE_HIGH>;
+               spi-3wire;
+               spi-max-frequency = <32000000>;
+
+               width-mm = <23>;
+               height-mm = <23>;
+               rotation = <180>;
+
+               panel-timing {
+                       hactive = <240>;
+                       vactive = <240>;
+                       hback-porch = <0>;
+                       vback-porch = <0>;
+
+                       clock-frequency = <0>;
+                       hfront-porch = <0>;
+                       hsync-len = <0>;
+                       vfront-porch = <0>;
+                       vsync-len = <0>;
+               };
+       };
+};
+
+&timers2 {
+       /* spare dmas for other usage */
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       status = "okay";
+
+       timer@1 {
+               status = "okay";
+       };
+};
+
+&timers3 {
+       /* spare dmas for other usage */
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       status = "okay";
+
+       timer@2 {
+               status = "okay";
+       };
+};
+
+&timers4 {
+       /* spare dmas for other usage */
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       status = "okay";
+
+       timer@3 {
+               status = "okay";
+       };
+};
+
+&timers8 {
+       /* spare dmas for other usage */
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       status = "okay";
+
+       led_pwm: pwm {
+               pinctrl-names = "default", "sleep";
+               pinctrl-0 = <&pwm8_pins_b>;
+               pinctrl-1 = <&pwm8_sleep_pins_b>;
+               status = "okay";
+       };
+};
+
+&uart4 {
+       label = "debug";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart4_pins_a>;
+
+       /* spare dmas for other usage */
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       status = "okay";
+};
+
+&usart3 {
+       label = "external";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&usart3_pins_a>;
+
+       /* spare dmas for other usage */
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       status = "okay";
+};
+
+&usbh_ehci {
+       phys = <&usbphyc_port0>;
+       phy-names = "usb";
+
+       status = "okay";
+};
+
+&usbotg_hs {
+       phys = <&usbphyc_port1 0>;
+       phy-names = "usb2-phy";
+
+       vusb_d-supply = <&vdd_usb>;
+       vusb_a-supply = <&reg18>;
+
+       status = "okay";
+};
+
+&usbphyc {
+       status = "okay";
+};
+
+&usbphyc_port0 {
+       phy-supply = <&vdd_usb>;
+};
+
+&usbphyc_port1 {
+       phy-supply = <&vdd_usb>;
+};
+
+&v3v3_hdmi {
+       regulator-enable-ramp-delay = <1000>;
+};
index 5f9c016..324f7bb 100644 (file)
@@ -67,7 +67,7 @@
        touchscreen@38 {
                compatible = "focaltech,ft6236";
                reg = <0x38>;
-               interrupts = <2 2>;
+               interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
                interrupt-parent = <&gpiof>;
                touchscreen-size-x = <480>;
                touchscreen-size-y = <800>;
index 4df1037..173401c 100644 (file)
        status = "okay";
 
        /* Don't pull down battery voltage adc io channel */
-       batt_volt_en {
+       batt-volt-en-hog {
                gpio-hog;
                gpios = <6 GPIO_ACTIVE_HIGH>;
                output-high;
        };
 
        /* Don't impede Bluetooth clock signal */
-       bt_clock_en {
+       bt-clock-en-hog {
                gpio-hog;
                gpios = <5 GPIO_ACTIVE_HIGH>;
                input;
         * anything, but they are present in the source code from LEGO.
         */
 
-       bt_pic_en {
+       bt-pic-en-hog {
                gpio-hog;
                gpios = <51 GPIO_ACTIVE_HIGH>;
                output-low;
        };
 
-       bt_pic_rst {
+       bt-pic-rst-hog {
                gpio-hog;
                gpios = <78 GPIO_ACTIVE_HIGH>;
                output-high;
        };
 
-       bt_pic_cts {
+       bt-pic-cts-hog {
                gpio-hog;
                gpios = <87 GPIO_ACTIVE_HIGH>;
                input;
index e278370..70e33cd 100644 (file)
 
 /* T2_GPIO_2 low to route GPIO_61 to on-board devices */
 &twl_gpio {
-       en_on_board_gpio_61 {
+       en-on-board-gpio-61-hog {
                gpio-hog;
                gpios = <2 GPIO_ACTIVE_HIGH>;
                output-low;
index 3fcef30..150dd84 100644 (file)
                        uart3: serial@0 {
                                compatible = "ti,omap4-uart";
                                reg = <0x0 0x100>;
-                               interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
                                clock-frequency = <48000000>;
                        };
                };
                        uart1: serial@0 {
                                compatible = "ti,omap4-uart";
                                reg = <0x0 0x100>;
-                               interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts-extended = <&wakeupgen GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
                                clock-frequency = <48000000>;
                        };
                };
                        uart2: serial@0 {
                                compatible = "ti,omap4-uart";
                                reg = <0x0 0x100>;
-                               interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts-extended = <&wakeupgen GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
                                clock-frequency = <48000000>;
                        };
                };
                        uart4: serial@0 {
                                compatible = "ti,omap4-uart";
                                reg = <0x0 0x100>;
-                               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts-extended = <&wakeupgen GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
                                clock-frequency = <48000000>;
                        };
                };
index 8fd076e..4b8bfd0 100644 (file)
@@ -7,6 +7,11 @@
 #include "omap443x.dtsi"
 #include "omap4-panda-common.dtsi"
 
+/ {
+       model = "TI OMAP4 PandaBoard (A4)";
+       compatible = "ti,omap4-panda-a4", "ti,omap4-panda", "ti,omap4430", "ti,omap4";
+};
+
 /* Pandaboard Rev A4+ have external pullups on SCL & SDA */
 &dss_hdmi_pins {
        pinctrl-single,pins = <
index a7db3f3..153b8d9 100644 (file)
@@ -8,6 +8,13 @@
        #size-cells = <1>;
        compatible = "xlnx,zynq-7000";
 
+       options {
+               u-boot {
+                       compatible = "u-boot,config";
+                       bootscr-address = /bits/ 64 <0x3000000>;
+               };
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
@@ -34,7 +41,7 @@
                };
        };
 
-       fpga_full: fpga-full {
+       fpga_full: fpga-region {
                compatible = "fpga-region";
                fpga-mgr = <&devcfg>;
                #address-cells = <1>;
        };
 
        amba: axi {
+               bootph-all;
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
                        reg = <0xf8006000 0x1000>;
                };
 
+               ocm: sram@fffc0000 {
+                       compatible = "mmio-sram";
+                       reg = <0xfffc0000 0x10000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0 0xfffc0000 0x10000>;
+                       ocm-sram@0 {
+                               reg = <0x0 0x10000>;
+                       };
+               };
+
                uart0: serial@e0000000 {
                        compatible = "xlnx,xuartps", "cdns,uart-r1p8";
                        status = "disabled";
                                  0x2 0x0 0xe4000000 0x2000000>; /* SRAM/NOR CS1 region */
                        #address-cells = <2>;
                        #size-cells = <1>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <0 18 4>;
 
                        nfc0: nand-controller@0,0 {
                                compatible = "arm,pl353-nand-r2p1";
                                reg = <0 0 0x1000000>;
                                status = "disabled";
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                       };
+                       nor0: flash@1,0 {
+                               status = "disabled";
+                               compatible = "cfi-flash";
+                               reg = <1 0 0x2000000>;
                        };
                };
 
                };
 
                slcr: slcr@f8000000 {
+                       bootph-all;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        compatible = "xlnx,zynq-slcr", "syscon", "simple-mfd";
                        reg = <0xF8000000 0x1000>;
                        ranges;
                        clkc: clkc@100 {
+                               bootph-all;
                                #clock-cells = <1>;
                                compatible = "xlnx,ps7-clkc";
                                fclk-enable = <0>;
                };
 
                scutimer: timer@f8f00600 {
+                       bootph-all;
                        interrupt-parent = <&intc>;
                        interrupts = <1 13 0x301>;
                        compatible = "arm,cortex-a9-twd-timer";
index 8b9ab9b..f5525c0 100644 (file)
@@ -18,6 +18,7 @@
        aliases {
                ethernet0 = &gem0;
                serial0 = &uart0;
+               spi0 = &qspi;
        };
 
        chosen {
 
        ethernet_phy: ethernet-phy@1 {
                reg = <1>;
-               device_type = "ethernet-phy";
+       };
+};
+
+&qspi {
+       status = "okay";
+       num-cs = <1>;
+       flash@0 { /* 16 MB */
+               compatible = "jedec,spi-nor";
+               reg = <0x0>;
+               spi-max-frequency = <50000000>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               partition@0 {
+                       label = "qspi-fsbl-uboot-bs";
+                       reg = <0x0 0x400000>; /* 4MB */
+               };
+               partition@400000 {
+                       label = "qspi-linux";
+                       reg = <0x400000 0x400000>; /* 4MB */
+               };
+               partition@800000 {
+                       label = "qspi-rootfs";
+                       reg = <0x800000 0x400000>; /* 4MB */
+               };
+               partition@c00000 {
+                       label = "qspi-devicetree";
+                       reg = <0xc00000 0x100000>; /* 1MB */
+               };
+               partition@d00000 {
+                       label = "qspi-scratch";
+                       reg = <0xd00000 0x200000>; /* 2MB */
+               };
+               partition@f00000 {
+                       label = "qspi-uboot-env";
+                       reg = <0xf00000 0x100000>; /* 1MB */
+               };
        };
 };
 
@@ -59,6 +97,7 @@
 };
 
 &uart0 {
+       bootph-all;
        status = "okay";
 };
 
index 53fa6db..14f6441 100644 (file)
@@ -51,6 +51,8 @@
 &nfc0 {
        status = "okay";
 
+       #address-cells = <1>;
+       #size-cells = <0>;
        nand@0 {
                reg = <0>;
        };
index 6ed84fb..68b867e 100644 (file)
@@ -11,8 +11,9 @@
        compatible = "avnet,zynq-microzed", "xlnx,zynq-microzed", "xlnx,zynq-7000";
 
        aliases {
-               ethernet0 = &gem0;
                serial0 = &uart1;
+               spi0 = &qspi;
+               mmc0 = &sdhci0;
        };
 
        memory@0 {
        ps-clk-frequency = <33333333>;
 };
 
+&qspi {
+       bootph-all;
+       status = "okay";
+};
+
 &gem0 {
        status = "okay";
        phy-mode = "rgmii-id";
 };
 
 &sdhci0 {
+       bootph-all;
        status = "okay";
 };
 
 &uart1 {
+       bootph-all;
        status = "okay";
 };
 
index 54592ae..366af4f 100644 (file)
@@ -46,7 +46,6 @@
                compatible = "ethernet-phy-id0141.0e90",
                             "ethernet-phy-ieee802.3-c22";
                reg = <0>;
-               device_type = "ethernet-phy";
                marvell,reg-init = <0x3 0x10 0xff00 0x1e>,
                                   <0x3 0x11 0xfff0 0xa>;
        };
index 6efdbca..6955637 100644 (file)
                ethernet0 = &gem0;
                i2c0 = &i2c0;
                serial0 = &uart1;
+               spi0 = &qspi;
                mmc0 = &sdhci0;
+               nvmem0 = &eeprom;
+               rtc0 = &rtc;
        };
 
        memory@0 {
        };
 };
 
-&amba {
-       ocm: sram@fffc0000 {
-               compatible = "mmio-sram";
-               reg = <0xfffc0000 0x10000>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-               ranges = <0 0xfffc0000 0x10000>;
-               ocm-sram@0 {
-                       reg = <0x0 0x10000>;
-               };
-       };
-};
-
 &can0 {
        status = "okay";
        pinctrl-names = "default";
@@ -95,7 +85,6 @@
 
        ethernet_phy: ethernet-phy@7 {
                reg = <7>;
-               device_type = "ethernet-phy";
        };
 };
 
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <2>;
-                       eeprom@54 {
+                       eeprom: eeprom@54 {
                                compatible = "atmel,24c08";
                                reg = <0x54>;
                        };
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <4>;
-                       rtc@51 {
+                       rtc: rtc@51 {
                                compatible = "nxp,pcf8563";
                                reg = <0x51>;
                        };
                conf {
                        groups = "can0_9_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
 
                conf-rx {
                conf {
                        groups = "ethernet0_0_grp";
                        slew-rate = <0>;
-                       io-standard = <4>;
+                       power-source = <4>;
                };
 
                conf-rx {
                conf-mdio {
                        groups = "mdio0_0_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                        bias-disable;
                };
        };
                                 "gpio0_10_grp", "gpio0_11_grp", "gpio0_12_grp",
                                 "gpio0_13_grp", "gpio0_14_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
 
                conf-pull-up {
                        groups = "i2c0_10_grp";
                        bias-pull-up;
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
        };
 
-       pinctrl_i2c0_gpio: i2c0-gpio {
+       pinctrl_i2c0_gpio: i2c0-gpio-grp {
                mux {
                        groups = "gpio0_50_grp", "gpio0_51_grp";
                        function = "gpio0";
                conf {
                        groups = "gpio0_50_grp", "gpio0_51_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
        };
 
                conf {
                        groups = "sdio0_2_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                        bias-disable;
                };
 
                        bias-high-impedance;
                        bias-pull-up;
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
 
                mux-wp {
                        bias-high-impedance;
                        bias-pull-up;
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
        };
 
                conf {
                        groups = "uart1_10_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
 
                conf-rx {
                conf {
                        groups = "usb0_0_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
 
                conf-rx {
        };
 };
 
+&qspi {
+       bootph-all;
+       status = "okay";
+       num-cs = <1>;
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <50000000>;
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       partition@0 {
+                               label = "qspi-fsbl-uboot";
+                               reg = <0x0 0x100000>;
+                       };
+                       partition@100000 {
+                               label = "qspi-linux";
+                               reg = <0x100000 0x500000>;
+                       };
+                       partition@600000 {
+                               label = "qspi-device-tree";
+                               reg = <0x600000 0x20000>;
+                       };
+                       partition@620000 {
+                               label = "qspi-rootfs";
+                               reg = <0x620000 0x5e0000>;
+                       };
+                       partition@c00000 {
+                               label = "qspi-bitstream";
+                               reg = <0xc00000 0x400000>;
+                       };
+               };
+       };
+};
+
 &sdhci0 {
+       bootph-all;
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_sdhci0_default>;
 };
 
 &uart1 {
+       bootph-all;
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart1_default>;
index 77943c1..3b803c6 100644 (file)
                ethernet0 = &gem0;
                i2c0 = &i2c0;
                serial0 = &uart1;
+               spi0 = &qspi;
                mmc0 = &sdhci0;
+               nvmem0 = &eeprom;
+               rtc0 = &rtc;
        };
 
        memory@0 {
@@ -46,7 +49,6 @@
 
        ethernet_phy: ethernet-phy@7 {
                reg = <7>;
-               device_type = "ethernet-phy";
        };
 };
 
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <2>;
-                       eeprom@54 {
+                       eeprom: eeprom@54 {
                                compatible = "atmel,24c08";
                                reg = <0x54>;
                        };
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <4>;
-                       rtc@51 {
+                       rtc: rtc@51 {
                                compatible = "nxp,pcf8563";
                                reg = <0x51>;
                        };
                conf {
                        groups = "ethernet0_0_grp";
                        slew-rate = <0>;
-                       io-standard = <4>;
+                       power-source = <4>;
                };
 
                conf-rx {
                conf-mdio {
                        groups = "mdio0_0_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                        bias-disable;
                };
        };
                conf {
                        groups = "gpio0_7_grp", "gpio0_46_grp", "gpio0_47_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
 
                conf-pull-up {
                        groups = "i2c0_10_grp";
                        bias-pull-up;
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
        };
 
                conf {
                        groups = "sdio0_2_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                        bias-disable;
                };
 
                        bias-high-impedance;
                        bias-pull-up;
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
 
                mux-wp {
                        bias-high-impedance;
                        bias-pull-up;
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
        };
 
                conf {
                        groups = "uart1_10_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
 
                conf-rx {
                conf {
                        groups = "usb0_0_grp";
                        slew-rate = <0>;
-                       io-standard = <1>;
+                       power-source = <1>;
                };
 
                conf-rx {
        };
 };
 
+&qspi {
+       bootph-all;
+       status = "okay";
+       num-cs = <2>;
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>, <1>;
+               parallel-memories = /bits/ 64 <0x1000000 0x1000000>; /* 16MB */
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <50000000>;
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       partition@0 {
+                               label = "qspi-fsbl-uboot";
+                               reg = <0x0 0x100000>;
+                       };
+                       partition@100000 {
+                               label = "qspi-linux";
+                               reg = <0x100000 0x500000>;
+                       };
+                       partition@600000 {
+                               label = "qspi-device-tree";
+                               reg = <0x600000 0x20000>;
+                       };
+                       partition@620000 {
+                               label = "qspi-rootfs";
+                               reg = <0x620000 0x5e0000>;
+                       };
+                       partition@c00000 {
+                               label = "qspi-bitstream";
+                               reg = <0xc00000 0x400000>;
+                       };
+               };
+       };
+};
+
 &sdhci0 {
+       bootph-all;
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_sdhci0_default>;
 };
 
 &uart1 {
+       bootph-all;
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart1_default>;
index 0dd3522..5fe799c 100644 (file)
@@ -15,6 +15,7 @@
                ethernet0 = &gem0;
                i2c0 = &i2c0;
                serial0 = &uart1;
+               spi0 = &qspi;
                spi1 = &spi1;
        };
 
@@ -45,7 +46,6 @@
 
        ethernet_phy: ethernet-phy@7 {
                reg = <7>;
-               device_type = "ethernet-phy";
        };
 };
 
                compatible = "atmel,24c02";
                reg = <0x52>;
        };
+};
 
+&qspi {
+       status = "okay";
+       num-cs = <1>;
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0x0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <50000000>;
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       partition@0 {
+                               label = "qspi-fsbl-uboot";
+                               reg = <0x0 0x100000>;
+                       };
+                       partition@100000 {
+                               label = "qspi-linux";
+                               reg = <0x100000 0x500000>;
+                       };
+                       partition@600000 {
+                               label = "qspi-device-tree";
+                               reg = <0x600000 0x20000>;
+                       };
+                       partition@620000 {
+                               label = "qspi-rootfs";
+                               reg = <0x620000 0x5e0000>;
+                       };
+                       partition@c00000 {
+                               label = "qspi-bitstream";
+                               reg = <0xc00000 0x400000>;
+                       };
+               };
+       };
 };
 
 &sdhci0 {
 };
 
 &uart1 {
+       bootph-all;
        status = "okay";
 };
 
index 56732e8..f9a086f 100644 (file)
        };
 };
 
+&nfc0 {
+       status = "okay";
+       #address-cells = <1>;
+       #size-cells = <0>;
+       nand@0 {
+               reg = <0>;
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       partition@0 {
+                               label = "nand-fsbl-uboot";
+                               reg = <0x0 0x1000000>;
+                       };
+                       partition@1000000 {
+                               label = "nand-linux";
+                               reg = <0x1000000 0x2000000>;
+                       };
+                       partition@3000000 {
+                               label = "nand-rootfs";
+                               reg = <0x3000000 0x200000>;
+                       };
+               };
+       };
+};
+
+&smcc {
+       status = "okay";
+};
+
 &spi0 {
        status = "okay";
        num-cs = <4>;
@@ -54,6 +84,7 @@
 };
 
 &uart1 {
+       bootph-all;
        status = "okay";
 };
 
index d2359b7..24520e7 100644 (file)
        };
 };
 
+&nor0 {
+       status = "okay";
+       bank-width = <1>;
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               partition@0 {
+                       label = "nor-fsbl-uboot";
+                       reg = <0x0 0x100000>;
+               };
+               partition@100000 {
+                       label = "nor-linux";
+                       reg = <0x100000 0x500000>;
+               };
+               partition@600000 {
+                       label = "nor-device-tree";
+                       reg = <0x600000 0x20000>;
+               };
+               partition@620000 {
+                       label = "nor-rootfs";
+                       reg = <0x620000 0x5e0000>;
+               };
+               partition@c00000 {
+                       label = "nor-bitstream";
+                       reg = <0xc00000 0x400000>;
+               };
+       };
+};
+
+&smcc {
+       status = "okay";
+};
+
 &spi1 {
        status = "okay";
        num-cs = <4>;
@@ -60,5 +94,6 @@
 };
 
 &uart1 {
+       bootph-all;
        status = "okay";
 };
index 38d96ad..103e87e 100644 (file)
@@ -15,6 +15,7 @@
                ethernet0 = &gem1;
                i2c0 = &i2c1;
                serial0 = &uart0;
+               spi0 = &qspi;
                spi1 = &spi0;
        };
 
@@ -40,7 +41,6 @@
 
        ethernet_phy: ethernet-phy@7 {
                reg = <7>;
-               device_type = "ethernet-phy";
        };
 };
 
        };
 };
 
+&qspi {
+       status = "okay";
+       num-cs = <2>;
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>, <1>;
+               parallel-memories = /bits/ 64 <0x1000000 0x1000000>; /* 16MB */
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <50000000>;
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       partition@0 {
+                               label = "qspi-fsbl-uboot";
+                               reg = <0x0 0x100000>;
+                       };
+                       partition@100000 {
+                               label = "qspi-linux";
+                               reg = <0x100000 0x500000>;
+                       };
+                       partition@600000 {
+                               label = "qspi-device-tree";
+                               reg = <0x600000 0x20000>;
+                       };
+                       partition@620000 {
+                               label = "qspi-rootfs";
+                               reg = <0x620000 0x5e0000>;
+                       };
+                       partition@c00000 {
+                               label = "qspi-bitstream";
+                               reg = <0xc00000 0x400000>;
+                       };
+               };
+       };
+};
+
 &spi0 {
        status = "okay";
        num-cs = <4>;
 };
 
 &uart0 {
+       bootph-all;
        status = "okay";
 };
index 6a5a93a..52ba569 100644 (file)
@@ -13,6 +13,7 @@
        aliases {
                ethernet0 = &gem0;
                serial0 = &uart1;
+               spi0 = &qspi;
                mmc0 = &sdhci0;
        };
 
 
        ethernet_phy: ethernet-phy@0 {
                reg = <0>;
-               device_type = "ethernet-phy";
+       };
+};
+
+&qspi {
+       bootph-all;
+       status = "okay";
+       num-cs = <1>;
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <50000000>;
+               m25p,fast-read;
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       partition@0 {
+                               label = "qspi-fsbl-uboot";
+                               reg = <0x0 0x100000>;
+                       };
+                       partition@100000 {
+                               label = "qspi-linux";
+                               reg = <0x100000 0x500000>;
+                       };
+                       partition@600000 {
+                               label = "qspi-device-tree";
+                               reg = <0x600000 0x20000>;
+                       };
+                       partition@620000 {
+                               label = "qspi-rootfs";
+                               reg = <0x620000 0x5e0000>;
+                       };
+                       partition@c00000 {
+                               label = "qspi-bitstream";
+                               reg = <0xc00000 0x400000>;
+                       };
+               };
        };
 };
 
 &sdhci0 {
+       bootph-all;
        status = "okay";
 };
 
 &uart1 {
+       bootph-all;
        status = "okay";
 };
 
index 33b02e0..defef9c 100644 (file)
        ps-clk-frequency = <33333333>;
 };
 
+&qspi {
+       bootph-all;
+       status = "okay";
+};
+
 &gem0 {
        status = "okay";
        phy-mode = "rgmii-id";
 };
 
 &sdhci0 {
+       bootph-all;
        status = "okay";
 };
 
 &uart0 {
+       bootph-all;
        status = "okay";
 };
 
 &uart1 {
+       bootph-all;
        status = "okay";
 };
 
index 7b87e10..56b917e 100644 (file)
@@ -10,6 +10,8 @@
        aliases {
                ethernet0 = &gem0;
                serial0 = &uart1;
+               spi0 = &qspi;
+               mmc0 = &sdhci0;
        };
 
        memory@0 {
 
        ethernet_phy: ethernet-phy@0 {
                reg = <0>;
-               device_type = "ethernet-phy";
        };
 };
 
+&qspi {
+       bootph-all;
+       status = "okay";
+};
+
 &sdhci0 {
+       bootph-all;
        status = "okay";
 };
 
 &uart1 {
+       bootph-all;
        status = "okay";
 };
 
index 755f6f1..fbc7d1b 100644 (file)
@@ -13,6 +13,7 @@
        aliases {
                ethernet0 = &gem0;
                serial0 = &uart1;
+               spi0 = &qspi;
                mmc0 = &sdhci0;
        };
 
 
        ethernet_phy: ethernet-phy@0 {
                reg = <0>;
-               device_type = "ethernet-phy";
        };
 };
 
+&qspi {
+       bootph-all;
+       status = "okay";
+};
+
 &sdhci0 {
+       bootph-all;
        status = "okay";
 };
 
 &uart1 {
+       bootph-all;
        status = "okay";
 };
 
index cf58e43..d53b72d 100644 (file)
                reg = <0x0 0x80000000 0x2 0x00000000>;
        };
 };
+
+&spi_nand {
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               bootloader@0 {
+                       label = "bootloader";
+                       reg = <0x00000000 0x00080000>;
+                       read-only;
+               };
+
+               art@200000 {
+                       label = "art";
+                       reg = <0x00200000 0x00400000>;
+               };
+
+               tclinux@600000 {
+                       label = "tclinux";
+                       reg = <0x00600000 0x03200000>;
+               };
+
+               tclinux_slave@3800000 {
+                       label = "tclinux_alt";
+                       reg = <0x03800000 0x03200000>;
+               };
+
+               rootfs_data@6a00000 {
+                       label = "rootfs_data";
+                       reg = <0x06a00000 0x01400000>;
+               };
+
+               reserved_bmt@7e00000 {
+                       label = "reserved_bmt";
+                       reg = <0x07e00000 0x00200000>;
+                       read-only;
+               };
+       };
+};
+
+&i2c0 {
+       status = "okay";
+};
index 55eb176..26b1369 100644 (file)
@@ -2,6 +2,8 @@
 
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/en7523-clk.h>
+#include <dt-bindings/reset/airoha,en7581-reset.h>
 
 / {
        interrupt-parent = <&gic>;
                             <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
        };
 
+       clk20m: clock-20000000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <20000000>;
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                        interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
                };
 
+               spi@1fa10000 {
+                       compatible = "airoha,en7581-snand";
+                       reg = <0x0 0x1fa10000 0x0 0x140>,
+                             <0x0 0x1fa11000 0x0 0x160>;
+
+                       clocks = <&scuclk EN7523_CLK_SPI>;
+                       clock-names = "spi";
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       status = "disabled";
+
+                       spi_nand: nand@0 {
+                               compatible = "spi-nand";
+                               reg = <0>;
+
+                               spi-max-frequency = <50000000>;
+                               spi-tx-bus-width = <1>;
+                               spi-rx-bus-width = <2>;
+                       };
+               };
+
+               scuclk: clock-controller@1fb00000 {
+                       compatible = "airoha,en7581-scu";
+                       reg = <0x0 0x1fb00000 0x0 0x970>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+               };
+
                uart1: serial@1fbf0000 {
                        compatible = "ns16550";
                        reg = <0x0 0x1fbf0000 0x0 0x30>;
                        interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
                        clock-frequency = <1843200>;
                };
+
+               rng@1faa1000 {
+                       compatible = "airoha,en7581-trng";
+                       reg = <0x0 0x1faa1000 0x0 0xc04>;
+                       interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               system-controller@1fbf0200 {
+                       compatible = "airoha,en7581-gpio-sysctl", "syscon",
+                                    "simple-mfd";
+                       reg = <0x0 0x1fbf0200 0x0 0xc0>;
+
+                       en7581_pinctrl: pinctrl {
+                               compatible = "airoha,en7581-pinctrl";
+
+                               interrupt-parent = <&gic>;
+                               interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+
+                               gpio-controller;
+                               #gpio-cells = <2>;
+
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                       };
+               };
+
+               i2c0: i2c@1fbf8000 {
+                       compatible = "mediatek,mt7621-i2c";
+                       reg = <0x0 0x1fbf8000 0x0 0x100>;
+
+                       resets = <&scuclk EN7581_I2C2_RST>;
+
+                       clocks = <&clk20m>;
+                       clock-frequency = <100000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       status = "disabled";
+               };
+
+               i2c1: i2c@1fbf8100 {
+                       compatible = "mediatek,mt7621-i2c";
+                       reg = <0x0 0x1fbf8100 0x0 0x100>;
+
+                       resets = <&scuclk EN7581_I2C_MASTER_RST>;
+
+                       clocks = <&clk20m>;
+                       clock-frequency = <100000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       status = "disabled";
+               };
        };
 };
index a387bcc..a7e3be0 100644 (file)
@@ -6,6 +6,7 @@
 /dts-v1/;
 
 #include "sun50i-a100.dtsi"
+#include "sun50i-a100-cpu-opp.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
 
        status = "okay";
 };
 
+&cpu0 {
+       cpu-supply = <&reg_dcdc2>;
+};
+
 &pio {
        vcc-pb-supply = <&reg_dcdc1>;
        vcc-pc-supply = <&reg_eldo1>;
diff --git a/src/arm64/allwinner/sun50i-a100-cpu-opp.dtsi b/src/arm64/allwinner/sun50i-a100-cpu-opp.dtsi
new file mode 100644 (file)
index 0000000..c6a2efa
--- /dev/null
@@ -0,0 +1,90 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+// Copyright (c) 2020 Yangtao Li <frank@allwinnertech.com>
+// Copyright (c) 2020 ShuoSheng Huang <huangshuosheng@allwinnertech.com>
+
+/ {
+       cpu_opp_table: opp-table-cpu {
+               compatible = "allwinner,sun50i-a100-operating-points";
+               nvmem-cells = <&cpu_speed_grade>;
+               opp-shared;
+
+               opp-408000000 {
+                       clock-latency-ns = <244144>; /* 8 32k periods */
+                       opp-hz = /bits/ 64 <408000000>;
+
+                       opp-microvolt-speed0 = <900000>;
+                       opp-microvolt-speed1 = <900000>;
+                       opp-microvolt-speed2 = <900000>;
+               };
+
+               opp-600000000 {
+                       clock-latency-ns = <244144>; /* 8 32k periods */
+                       opp-hz = /bits/ 64 <600000000>;
+
+                       opp-microvolt-speed0 = <900000>;
+                       opp-microvolt-speed1 = <900000>;
+                       opp-microvolt-speed2 = <900000>;
+               };
+
+               opp-816000000 {
+                       clock-latency-ns = <244144>; /* 8 32k periods */
+                       opp-hz = /bits/ 64 <816000000>;
+
+                       opp-microvolt-speed0 = <940000>;
+                       opp-microvolt-speed1 = <900000>;
+                       opp-microvolt-speed2 = <900000>;
+               };
+
+               opp-1080000000 {
+                       clock-latency-ns = <244144>; /* 8 32k periods */
+                       opp-hz = /bits/ 64 <1080000000>;
+
+                       opp-microvolt-speed0 = <1020000>;
+                       opp-microvolt-speed1 = <980000>;
+                       opp-microvolt-speed2 = <950000>;
+               };
+
+               opp-1200000000 {
+                       clock-latency-ns = <244144>; /* 8 32k periods */
+                       opp-hz = /bits/ 64 <1200000000>;
+
+                       opp-microvolt-speed0 = <1100000>;
+                       opp-microvolt-speed1 = <1020000>;
+                       opp-microvolt-speed2 = <1000000>;
+               };
+
+               opp-1320000000 {
+                       clock-latency-ns = <244144>; /* 8 32k periods */
+                       opp-hz = /bits/ 64 <1320000000>;
+
+                       opp-microvolt-speed0 = <1160000>;
+                       opp-microvolt-speed1 = <1060000>;
+                       opp-microvolt-speed2 = <1030000>;
+               };
+
+               opp-1464000000 {
+                       clock-latency-ns = <244144>; /* 8 32k periods */
+                       opp-hz = /bits/ 64 <1464000000>;
+
+                       opp-microvolt-speed0 = <1180000>;
+                       opp-microvolt-speed1 = <1180000>;
+                       opp-microvolt-speed2 = <1130000>;
+               };
+       };
+};
+
+&cpu0 {
+       operating-points-v2 = <&cpu_opp_table>;
+};
+
+&cpu1 {
+       operating-points-v2 = <&cpu_opp_table>;
+};
+
+&cpu2 {
+       operating-points-v2 = <&cpu_opp_table>;
+};
+
+&cpu3 {
+       operating-points-v2 = <&cpu_opp_table>;
+};
index a24adba..f9f6fea 100644 (file)
@@ -23,6 +23,7 @@
                        device_type = "cpu";
                        reg = <0x0>;
                        enable-method = "psci";
+                       clocks = <&ccu CLK_CPUX>;
                };
 
                cpu1: cpu@1 {
@@ -30,6 +31,7 @@
                        device_type = "cpu";
                        reg = <0x1>;
                        enable-method = "psci";
+                       clocks = <&ccu CLK_CPUX>;
                };
 
                cpu2: cpu@2 {
@@ -37,6 +39,7 @@
                        device_type = "cpu";
                        reg = <0x2>;
                        enable-method = "psci";
+                       clocks = <&ccu CLK_CPUX>;
                };
 
                cpu3: cpu@3 {
@@ -44,6 +47,7 @@
                        device_type = "cpu";
                        reg = <0x3>;
                        enable-method = "psci";
+                       clocks = <&ccu CLK_CPUX>;
                };
        };
 
                        ths_calibration: calib@14 {
                                reg = <0x14 8>;
                        };
+
+                       cpu_speed_grade: cpu-speed-grade@1c {
+                               reg = <0x1c 0x2>;
+                       };
                };
 
                watchdog@30090a0 {
index 13a0e63..2c64d83 100644 (file)
        vcc-pg-supply = <&reg_aldo1>;
 };
 
-&r_ir {
-       linux,rc-map-name = "rc-beelink-gs1";
-       status = "okay";
-};
-
-&r_pio {
-       /*
-        * FIXME: We can't add that supply for now since it would
-        * create a circular dependency between pinctrl, the regulator
-        * and the RSB Bus.
-        *
-        * vcc-pl-supply = <&reg_aldo1>;
-        */
-       vcc-pm-supply = <&reg_aldo1>;
-};
-
-&r_rsb {
+&r_i2c {
        status = "okay";
 
-       axp805: pmic@745 {
+       axp805: pmic@36 {
                compatible = "x-powers,axp805", "x-powers,axp806";
-               reg = <0x745>;
+               reg = <0x36>;
                interrupt-parent = <&r_intc>;
                interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
                interrupt-controller;
        };
 };
 
+&r_ir {
+       linux,rc-map-name = "rc-beelink-gs1";
+       status = "okay";
+};
+
+&r_pio {
+       /*
+        * PL0 and PL1 are used for PMIC I2C
+        * don't enable the pl-supply else
+        * it will fail at boot
+        *
+        * vcc-pl-supply = <&reg_aldo1>;
+        */
+       vcc-pm-supply = <&reg_aldo1>;
+};
+
 &spdif {
        pinctrl-names = "default";
        pinctrl-0 = <&spdif_tx_pin>;
index ab87c34..f005072 100644 (file)
        vcc-pg-supply = <&reg_vcc_wifi_io>;
 };
 
-&r_ir {
-       status = "okay";
-};
-
-&r_rsb {
+&r_i2c {
        status = "okay";
 
-       axp805: pmic@745 {
+       axp805: pmic@36 {
                compatible = "x-powers,axp805", "x-powers,axp806";
-               reg = <0x745>;
+               reg = <0x36>;
                interrupt-parent = <&r_intc>;
                interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
                interrupt-controller;
        };
 };
 
+&r_ir {
+       status = "okay";
+};
+
 &rtc {
        clocks = <&ext_osc32k>;
 };
index d05dc5d..e34dbb9 100644 (file)
        vcc-pg-supply = <&reg_aldo1>;
 };
 
-&r_ir {
-       status = "okay";
-};
-
-&r_pio {
-       vcc-pm-supply = <&reg_bldo3>;
-};
-
-&r_rsb {
+&r_i2c {
        status = "okay";
 
-       axp805: pmic@745 {
+       axp805: pmic@36 {
                compatible = "x-powers,axp805", "x-powers,axp806";
-               reg = <0x745>;
+               reg = <0x36>;
                interrupt-parent = <&r_intc>;
                interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
                interrupt-controller;
        };
 };
 
+&r_ir {
+       status = "okay";
+};
+
+&r_pio {
+       vcc-pm-supply = <&reg_bldo3>;
+};
+
 &rtc {
        clocks = <&ext_osc32k>;
 };
index a231abf..7e17ca0 100644 (file)
                        gpios = <&pio 8 12 GPIO_ACTIVE_HIGH>; /* PI12 */
                        default-state = "on";
                };
+
+               led-1 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&pio 8 11 GPIO_ACTIVE_HIGH>; /* PI11 */
+               };
        };
 
        reg_vcc5v: regulator-vcc5v { /* USB-C power input */
                battery_power: battery-power {
                        compatible = "x-powers,axp717-battery-power-supply";
                        monitored-battery = <&battery>;
+                       x-powers,no-thermistor;
                };
 
                regulators {
                                regulator-name = "boost";
                        };
 
+                       /*
+                        * Regulator function is unknown, but reading
+                        * GPIO values in bootloader is inconsistent
+                        * on reboot if this is disabled. Setting to
+                        * default value from regulator OTP mem.
+                        */
                        reg_cpusldo: cpusldo {
-                               /* unused */
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
                        };
                };
 
index ff45333..bef4d10 100644 (file)
                            <&pio 8 2 GPIO_ACTIVE_LOW>;
                #mux-control-cells = <0>;
        };
+
+       reg_vcc3v8_usb: regulator-vcc3v8-usb {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&pio 4 5 GPIO_ACTIVE_HIGH>; /* PE5 */
+               regulator-min-microvolt = <3800000>;
+               regulator-max-microvolt = <3800000>;
+               regulator-name = "vcc3v8-usb";
+       };
+
+       reg_vcc5v0_usb: regulator-vcc5v0-usb {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&pio 8 7 GPIO_ACTIVE_HIGH>; /* PI7 */
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc5v0-usb";
+               vin-supply = <&reg_vcc3v8_usb>;
+       };
 };
 
 &gpadc {
                function = "gpio_out";
        };
 };
+
+&usbphy {
+       usb1_vbus-supply = <&reg_vcc5v0_usb>;
+};
index da9de49..5a72f0b 100644 (file)
                        al,msi-num-spis = <160>;
                };
 
-               io-fabric@fc000000 {
+               io-bus@fc000000 {
                        compatible = "simple-bus";
                        #address-cells = <1>;
                        #size-cells = <1>;
index 8b6156b..dea60d1 100644 (file)
                        interrupt-parent = <&gic>;
                };
 
-               io-fabric@fc000000 {
+               io-bus@fc000000 {
                        compatible = "simple-bus";
                        #address-cells = <1>;
                        #size-cells = <1>;
index 7c82d90..8862ada 100644 (file)
@@ -58,7 +58,7 @@
 
 &spi1 {
        status = "okay";
-       sdcard0: sdcard@0 {
+       sdcard0: mmc@0 {
                compatible = "mmc-spi-slot";
                reg = <0>;
                spi-max-frequency = <20000000>;
index 58e2b0a..b34dd8d 100644 (file)
@@ -8,32 +8,10 @@
 
 /dts-v1/;
 
-/include/ "amd-seattle-soc.dtsi"
-/include/ "amd-seattle-cpus.dtsi"
+/include/ "amd-overdrive-rev-b0.dts"
 
 / {
        model = "AMD Seattle (Rev.B1) Development Board (Overdrive)";
-       compatible = "amd,seattle-overdrive", "amd,seattle";
-
-       chosen {
-               stdout-path = &serial0;
-       };
-
-       psci {
-               compatible = "arm,psci-0.2";
-               method = "smc";
-       };
-};
-
-&ccp0 {
-       status = "okay";
-};
-
-/**
- * NOTE: In Rev.B, gpio0 is reserved.
- */
-&gpio1 {
-       status = "okay";
 };
 
 &gpio2 {
        status = "okay";
 };
 
-&gpio4 {
-       status = "okay";
-};
-
-&i2c0 {
-       status = "okay";
-};
-
-&i2c1 {
-       status = "okay";
-};
-
-&pcie0 {
-       status = "okay";
-};
-
 &sata1 {
        status = "okay";
 };
 
-&spi0 {
-       status = "okay";
-};
-
-&spi1 {
-       status = "okay";
-       sdcard0: sdcard@0 {
-               compatible = "mmc-spi-slot";
-               reg = <0>;
-               spi-max-frequency = <20000000>;
-               voltage-ranges = <3200 3400>;
-               pl022,interface = <0>;
-               pl022,com-mode = <0x0>;
-               pl022,rx-level-trig = <0>;
-               pl022,tx-level-trig = <0>;
-       };
-};
-
 &ipmi_kcs {
        status = "okay";
 };
 
-&smb0 {
-       /include/ "amd-seattle-xgbe-b.dtsi"
-};
index 2dd2c28..73f6877 100644 (file)
@@ -5,51 +5,39 @@
  * Copyright (C) 2014 Advanced Micro Devices, Inc.
  */
 
-       adl3clk_100mhz: clk100mhz_0 {
+       adl3clk_100mhz: uartspiclk_100mhz: clock-100000000 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <100000000>;
                clock-output-names = "adl3clk_100mhz";
        };
 
-       ccpclk_375mhz: clk375mhz {
+       ccpclk_375mhz: clock-375000000 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <375000000>;
                clock-output-names = "ccpclk_375mhz";
        };
 
-       sataclk_333mhz: clk333mhz {
+       sataclk_333mhz: clock-333000000 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <333000000>;
                clock-output-names = "sataclk_333mhz";
        };
 
-       pcieclk_500mhz: clk500mhz_0 {
+       dmaclk_500mhz: pcieclk_500mhz: clock-500000000 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <500000000>;
                clock-output-names = "pcieclk_500mhz";
        };
 
-       dmaclk_500mhz: clk500mhz_1 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <500000000>;
-               clock-output-names = "dmaclk_500mhz";
-       };
-
-       miscclk_250mhz: clk250mhz_4 {
+       xgmacclk0_dma_250mhz: xgmacclk0_ptp_250mhz: xgmacclk1_dma_250mhz: xgmacclk1_ptp_250mhz:
+       miscclk_250mhz: clock-250000000 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <250000000>;
                clock-output-names = "miscclk_250mhz";
        };
 
-       uartspiclk_100mhz: clk100mhz_1 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <100000000>;
-               clock-output-names = "uartspiclk_100mhz";
-       };
index d3d931e..a611f82 100644 (file)
@@ -11,6 +11,8 @@
        #address-cells = <2>;
        #size-cells = <2>;
 
+       /include/ "amd-seattle-clks.dtsi"
+
        gic0: interrupt-controller@e1101000 {
                compatible = "arm,gic-400", "arm,cortex-a15-gic";
                interrupt-controller;
@@ -38,7 +40,7 @@
                             <1 10 0xff04>;
        };
 
-       smb0: smb {
+       smb0: bus {
                compatible = "simple-bus";
                #address-cells = <2>;
                #size-cells = <2>;
@@ -51,8 +53,6 @@
                 */
                dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
 
-               /include/ "amd-seattle-clks.dtsi"
-
                sata0: sata@e0300000 {
                        compatible = "snps,dwc-ahci";
                        reg = <0 0xe0300000 0 0xf0000>;
                        status = "disabled";
                        compatible = "arm,pl022", "arm,primecell";
                        reg = <0 0xe1020000 0 0x1000>;
-                       spi-controller;
                        interrupts = <0 330 4>;
                        clocks = <&uartspiclk_100mhz>, <&uartspiclk_100mhz>;
                        clock-names = "sspclk", "apb_pclk";
                        status = "disabled";
                        compatible = "arm,pl022", "arm,primecell";
                        reg = <0 0xe1030000 0 0x1000>;
-                       spi-controller;
                        interrupts = <0 329 4>;
                        clocks = <&uartspiclk_100mhz>, <&uartspiclk_100mhz>;
                        clock-names = "sspclk", "apb_pclk";
index 9259e54..18b0c2d 100644 (file)
@@ -5,35 +5,7 @@
  * Copyright (C) 2015 Advanced Micro Devices, Inc.
  */
 
-       xgmacclk0_dma_250mhz: clk250mhz_0 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <250000000>;
-               clock-output-names = "xgmacclk0_dma_250mhz";
-       };
-
-       xgmacclk0_ptp_250mhz: clk250mhz_1 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <250000000>;
-               clock-output-names = "xgmacclk0_ptp_250mhz";
-       };
-
-       xgmacclk1_dma_250mhz: clk250mhz_2 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <250000000>;
-               clock-output-names = "xgmacclk1_dma_250mhz";
-       };
-
-       xgmacclk1_ptp_250mhz: clk250mhz_3 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <250000000>;
-               clock-output-names = "xgmacclk1_ptp_250mhz";
-       };
-
-       xgmac0: xgmac@e0700000 {
+       xgmac0: ethernet@e0700000 {
                compatible = "amd,xgbe-seattle-v1a";
                reg = <0 0xe0700000 0 0x80000>,
                      <0 0xe0780000 0 0x80000>,
@@ -59,7 +31,7 @@
                dma-coherent;
        };
 
-       xgmac1: xgmac@e0900000 {
+       xgmac1: ethernet@e0900000 {
                compatible = "amd,xgbe-seattle-v1a";
                reg = <0 0xe0900000 0 0x80000>,
                      <0 0xe0980000 0 0x80000>,
index de10e7a..a068385 100644 (file)
                };
        };
 };
+
+&apb {
+       gpio_intc: interrupt-controller@4080 {
+               compatible = "amlogic,a4-gpio-intc",
+                            "amlogic,meson-gpio-intc";
+               reg = <0x0 0x4080 0x0 0x20>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               amlogic,channel-interrupts =
+                       <10 11 12 13 14 15 16 17 18 19 20 21>;
+       };
+
+       gpio_ao_intc: interrupt-controller@8e72c {
+               compatible = "amlogic,a4-gpio-ao-intc",
+                            "amlogic,meson-gpio-intc";
+               reg = <0x0 0x8e72c 0x0 0x0c>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               amlogic,channel-interrupts = <140 141>;
+       };
+};
index 17a6316..32ed177 100644 (file)
                };
        };
 };
+
+&apb {
+       gpio_intc: interrupt-controller@4080 {
+               compatible = "amlogic,a5-gpio-intc",
+                            "amlogic,meson-gpio-intc";
+               reg = <0x0 0x4080 0x0 0x20>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               amlogic,channel-interrupts =
+                       <10 11 12 13 14 15 16 17 18 19 20 21>;
+       };
+};
index e9b2286..a6924d2 100644 (file)
                        };
 
                        pwm_AO_cd: pwm@2000 {
-                               compatible = "amlogic,meson-axg-ao-pwm";
+                               compatible = "amlogic,meson-axg-pwm-v2", "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x02000  0x0 0x20>;
+                               clocks = <&xtal>,
+                                        <&clkc_AO CLKID_AO_CLK81>,
+                                        <&clkc CLKID_FCLK_DIV4>,
+                                        <&clkc CLKID_FCLK_DIV5>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
                        };
 
                        pwm_AO_ab: pwm@7000 {
-                               compatible = "amlogic,meson-axg-ao-pwm";
+                               compatible = "amlogic,meson-axg-pwm-v2", "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x07000 0x0 0x20>;
+                               clocks = <&xtal>,
+                                        <&clkc_AO CLKID_AO_CLK81>,
+                                        <&clkc CLKID_FCLK_DIV4>,
+                                        <&clkc CLKID_FCLK_DIV5>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
                        };
 
                        pwm_ab: pwm@1b000 {
-                               compatible = "amlogic,meson-axg-ee-pwm";
+                               compatible = "amlogic,meson-axg-pwm-v2", "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x1b000 0x0 0x20>;
+                               clocks = <&xtal>,
+                                        <&clkc CLKID_FCLK_DIV5>,
+                                        <&clkc CLKID_FCLK_DIV4>,
+                                        <&clkc CLKID_FCLK_DIV3>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
 
                        pwm_cd: pwm@1a000 {
-                               compatible = "amlogic,meson-axg-ee-pwm";
+                               compatible = "amlogic,meson-axg-pwm-v2", "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x1a000 0x0 0x20>;
+                               clocks = <&xtal>,
+                                        <&clkc CLKID_FCLK_DIV5>,
+                                        <&clkc CLKID_FCLK_DIV4>,
+                                        <&clkc CLKID_FCLK_DIV3>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
index 49b51c5..69834b4 100644 (file)
                        };
 
                        pwm_AO_cd: pwm@2000 {
-                               compatible = "amlogic,meson-g12a-ao-pwm-cd";
+                               compatible = "amlogic,meson-g12-pwm-v2",
+                                            "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x2000 0x0 0x20>;
+                               clocks = <&xtal>,
+                                        <&clkc_AO CLKID_AO_CLK81>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
                        };
 
                        pwm_AO_ab: pwm@7000 {
-                               compatible = "amlogic,meson-g12a-ao-pwm-ab";
+                               compatible = "amlogic,meson-g12-pwm-v2",
+                                            "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x7000 0x0 0x20>;
+                               clocks = <&xtal>,
+                                        <&clkc_AO CLKID_AO_CLK81>,
+                                        <&clkc CLKID_FCLK_DIV4>,
+                                        <&clkc CLKID_FCLK_DIV5>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
                        };
 
                        pwm_ef: pwm@19000 {
-                               compatible = "amlogic,meson-g12a-ee-pwm";
+                               compatible = "amlogic,meson-g12-pwm-v2",
+                                            "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x19000 0x0 0x20>;
+                               clocks = <&xtal>,
+                                        <0>, /* unknown/untested, the datasheet calls it "vid_pll" */
+                                        <&clkc CLKID_FCLK_DIV4>,
+                                        <&clkc CLKID_FCLK_DIV3>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
 
                        pwm_cd: pwm@1a000 {
-                               compatible = "amlogic,meson-g12a-ee-pwm";
+                               compatible = "amlogic,meson-g12-pwm-v2",
+                                            "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x1a000 0x0 0x20>;
+                               clocks = <&xtal>,
+                                        <0>, /* unknown/untested, the datasheet calls it "vid_pll" */
+                                        <&clkc CLKID_FCLK_DIV4>,
+                                        <&clkc CLKID_FCLK_DIV3>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
 
                        pwm_ab: pwm@1b000 {
-                               compatible = "amlogic,meson-g12a-ee-pwm";
+                               compatible = "amlogic,meson-g12-pwm-v2",
+                                            "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x1b000 0x0 0x20>;
+                               clocks = <&xtal>,
+                                        <0>, /* unknown/untested, the datasheet calls it "vid_pll" */
+                                        <&clkc CLKID_FCLK_DIV4>,
+                                        <&clkc CLKID_FCLK_DIV3>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
index a457b3f..9aa36f1 100644 (file)
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
 };
 
 &pdm {
index c779a5d..952b8d0 100644 (file)
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index ea51341..52fbc51 100644 (file)
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
 };
 
 &pdm {
index f70a469..5407049 100644 (file)
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
index 32f98a1..01da836 100644 (file)
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
 };
 
 &uart_A {
index 65b963d..adedc13 100644 (file)
 
 &pwm_ab {
        pinctrl-0 = <&pwm_a_e_pins>, <&pwm_b_x7_pins>;
-       clocks = <&xtal>, <&xtal>;
-       clock-names = "clkin0", "clkin1";
 };
index 08c33ec..92e8b26 100644 (file)
 &pwm_ab {
        pinctrl-0 = <&pwm_a_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
 
        status = "okay";
 };
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
 
        status = "okay";
 };
index d4e1990..54663c5 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_a_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
 };
 
 &pwm_ef {
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
index de35fa2..8e3e335 100644 (file)
        status = "okay";
 };
 
+&clkc_audio {
+       status = "okay";
+};
+
 &frddr_a {
        status = "okay";
 };
index 16dd409..48650ba 100644 (file)
 &pwm_ab {
        pinctrl-0 = <&pwm_a_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
        status = "okay";
 };
 
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
index 09d959a..7e8964b 100644 (file)
 &pwm_ab {
        pinctrl-0 = <&pwm_a_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
        status = "okay";
 };
 
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
index 39feba7..fc05ecf 100644 (file)
 &pwm_ab {
        pinctrl-0 = <&pwm_a_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
        status = "okay";
 };
 
 &pwm_ef {
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
        status = "okay";
 };
 
 &pwm_AO_ab {
        pinctrl-0 = <&pwm_ao_a_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
        status = "okay";
 };
 
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
index 4cb6930..a7a0fc2 100644 (file)
 &pwm_ab {
        pinctrl-0 = <&pwm_a_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
        status = "okay";
 };
 
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
 &pwm_ef {
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
        status = "okay";
 };
 
index d38c3a2..2da49cf 100644 (file)
 &pwm_AO_ab {
        pinctrl-0 = <&pwm_ao_a_3_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
        status = "okay";
 };
 
 &pwm_ab {
        pinctrl-0 = <&pwm_b_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
        status = "okay";
 };
 
 &pwm_ef {
        pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
        status = "okay";
 };
 
index 45ccddd..6da1316 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index 2673f0d..7d99ca4 100644 (file)
                        };
 
                        pwm_ab: pwm@8550 {
-                               compatible = "amlogic,meson-gx-pwm", "amlogic,meson-gxbb-pwm";
+                               compatible = "amlogic,meson-gxbb-pwm-v2", "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x08550 0x0 0x10>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
 
                        pwm_cd: pwm@8650 {
-                               compatible = "amlogic,meson-gx-pwm", "amlogic,meson-gxbb-pwm";
+                               compatible = "amlogic,meson-gxbb-pwm-v2", "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x08650 0x0 0x10>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
 
                        pwm_ef: pwm@86c0 {
-                               compatible = "amlogic,meson-gx-pwm", "amlogic,meson-gxbb-pwm";
+                               compatible = "amlogic,meson-gxbb-pwm-v2", "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x086c0 0x0 0x10>;
                                #pwm-cells = <3>;
                                status = "disabled";
                        };
 
                        pwm_AO_ab: pwm@550 {
-                               compatible = "amlogic,meson-gx-ao-pwm", "amlogic,meson-gxbb-ao-pwm";
+                               compatible = "amlogic,meson-gxbb-pwm-v2", "amlogic,meson8-pwm-v2";
                                reg = <0x0 0x00550 0x0 0x10>;
                                #pwm-cells = <3>;
                                status = "disabled";
index cf2e2ef..2ecc6eb 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index 7d7dde9..c09da40 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 /* Wireless SDIO Module */
index 1736bd2..6f67364 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 /* Wireless SDIO Module */
index 3807a18..6ff5672 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index deb2952..bfedfc1 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index ed00e67..6c13459 100644 (file)
        };
 };
 
+&pwm_ab {
+       clocks = <&xtal>,
+                <0>, /* unknown/untested, the datasheet calls it "vid_pll" */
+                <&clkc CLKID_FCLK_DIV4>,
+                <&clkc CLKID_FCLK_DIV3>;
+};
+
+&pwm_AO_ab {
+       clocks = <&xtal>, <&clkc CLKID_CLK81>;
+};
+
+&pwm_cd {
+       clocks = <&xtal>,
+                <0>, /* unknown/untested, the datasheet calls it "vid_pll" */
+                <&clkc CLKID_FCLK_DIV4>,
+                <&clkc CLKID_FCLK_DIV3>;
+};
+
+&pwm_ef {
+       clocks = <&xtal>,
+                <0>, /* unknown/untested, the datasheet calls it "vid_pll" */
+                <&clkc CLKID_FCLK_DIV4>,
+                <&clkc CLKID_FCLK_DIV3>;
+};
+
 &pwrc {
        resets = <&reset RESET_VIU>,
                 <&reset RESET_VENC>,
index c5e2306..ca7c4e8 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 /* This is connected to the Bluetooth module: */
index 2b94b6e..4ca90ac 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index 89fe511..62a2da7 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 /* SD card */
index a80f0ea..4e89d6f 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal> , <&xtal>;
-       clock-names = "clkin0", "clkin1" ;
 };
 
 &pwm_ef {
index c79f9f2..236cede 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 /* Wireless SDIO Module */
index b52a830..05a0d4d 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index f58d179..19b8a39 100644 (file)
        };
 };
 
+&pwm_ab {
+       clocks = <&xtal>,
+                <0>, /* unknown/untested, the datasheet calls it "vid_pll" */
+                <&clkc CLKID_FCLK_DIV4>,
+                <&clkc CLKID_FCLK_DIV3>;
+};
+
+&pwm_AO_ab {
+       clocks = <&xtal>, <&clkc CLKID_CLK81>;
+};
+
+&pwm_cd {
+       clocks = <&xtal>,
+                <0>, /* unknown/untested, the datasheet calls it "vid_pll" */
+                <&clkc CLKID_FCLK_DIV4>,
+                <&clkc CLKID_FCLK_DIV3>;
+};
+
+&pwm_ef {
+       clocks = <&xtal>,
+                <0>, /* unknown/untested, the datasheet calls it "vid_pll" */
+                <&clkc CLKID_FCLK_DIV4>,
+                <&clkc CLKID_FCLK_DIV3>;
+};
+
 &pwrc {
        resets = <&reset RESET_VIU>,
                 <&reset RESET_VENC>,
index 96a3dd2..2a09b3d 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &pwm_ef {
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &sd_emmc_a {
index 7356d3b..ecaf678 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 /* Wireless SDIO Module */
index 929e472..ac9c4c2 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
 };
 
 &pwm_ab {
        status = "okay";
        pinctrl-0 = <&pwm_b_x7_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
 };
 
 &pwm_cd {
        status = "okay";
        pinctrl-0 = <&pwm_d_x3_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
 };
 
 &saradc {
index d1fa8b8..a346314 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_ao_a_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
 };
 
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index 81dce86..40db95f 100644 (file)
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
index 9c0b544..5d75ad3 100644 (file)
@@ -78,8 +78,6 @@
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
index 7b0e981..ad8d078 100644 (file)
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
index 2e3397e..37d7f64 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_ao_a_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
 };
 
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index 0b16adf..8868df1 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "s5l8960x.dtsi"
 #include "s5l8960x-common.dtsi"
+#include "s5l8960x-opp.dtsi"
 #include <dt-bindings/input/input.h>
 
 / {
                };
        };
 };
+
+&dwi_bl {
+       status = "okay";
+};
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_mipi_dsi>;
+};
index 741c5a9..dd57eb1 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "s5l8960x.dtsi"
 #include "s5l8960x-common.dtsi"
+#include "s5l8965x-opp.dtsi"
 #include <dt-bindings/input/input.h>
 
 / {
@@ -49,3 +50,7 @@
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_dp>;
+};
index b27ef56..f3696d2 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "s5l8960x.dtsi"
 #include "s5l8960x-common.dtsi"
+#include "s5l8960x-opp.dtsi"
 #include <dt-bindings/input/input.h>
 
 / {
@@ -49,3 +50,7 @@
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_dp>;
+};
diff --git a/src/arm64/apple/s5l8960x-opp.dtsi b/src/arm64/apple/s5l8960x-opp.dtsi
new file mode 100644 (file)
index 0000000..e4d568c
--- /dev/null
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Operating points for Apple S5L8960X "A7" SoC, Up to 1296 MHz
+ *
+ * target-type: N51, N53, J85, J86. J87, J85m, J86m, J87m
+ *
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/ {
+       cyclone_opp: opp-table {
+               compatible = "operating-points-v2";
+
+               opp01 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-level = <1>;
+                       clock-latency-ns = <15500>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-level = <2>;
+                       clock-latency-ns = <43000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-level = <3>;
+                       clock-latency-ns = <26000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <840000000>;
+                       opp-level = <4>;
+                       clock-latency-ns = <30000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <1128000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <39500>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <1296000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <45500>;
+               };
+       };
+};
diff --git a/src/arm64/apple/s5l8960x-pmgr.dtsi b/src/arm64/apple/s5l8960x-pmgr.dtsi
new file mode 100644 (file)
index 0000000..da265f4
--- /dev/null
@@ -0,0 +1,610 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * PMGR Power domains for the Apple S5L8960X "A7" SoC
+ *
+ * Copyright (c) 2024 Nick Chan <towinchenmi@gmail.com>
+ */
+
+&pmgr {
+       ps_cpu0: power-controller@20000 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu0";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu1: power-controller@20008 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu1";
+               apple,always-on; /* Core device */
+       };
+
+       ps_secuart0: power-controller@200f0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "secuart0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_secuart1: power-controller@200f8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "secuart1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_cpm: power-controller@20010 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpm";
+               apple,always-on; /* Core device */
+       };
+
+       ps_lio: power-controller@20018 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "lio";
+               apple,always-on; /* Core device */
+       };
+
+       ps_iomux: power-controller@20020 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20020 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "iomux";
+               apple,always-on; /* Core device */
+       };
+
+       ps_aic: power-controller@20028 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20028 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aic";
+               apple,always-on; /* Core device */
+       };
+
+       ps_debug: power-controller@20030 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20030 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug";
+       };
+
+       ps_dwi: power-controller@20038 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20038 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dwi";
+       };
+
+       ps_gpio: power-controller@20040 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20040 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gpio";
+       };
+
+       ps_mca0: power-controller@20048 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20048 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca1: power-controller@20050 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20050 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca2: power-controller@20058 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20058 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca3: power-controller@20060 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20060 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca4: power-controller@20068 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20068 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_pwm0: power-controller@20070 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20070 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pwm0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c0: power-controller@20078 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20078 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c1: power-controller@20080 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20080 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c2: power-controller@20088 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20088 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c3: power-controller@20090 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20090 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi0: power-controller@20098 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20098 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi1: power-controller@200a0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi2: power-controller@200a8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi3: power-controller@200b0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart0: power-controller@200b8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart1: power-controller@200c0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart2: power-controller@200c8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart3: power-controller@200d0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart4: power-controller@200d8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart5: power-controller@200e0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart5";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart6: power-controller@200e8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x200e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart6";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_sio_p: power-controller@20110 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20110 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_p";
+       };
+
+       ps_usb: power-controller@20158 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20158 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb";
+       };
+
+       ps_usbctrl: power-controller@20160 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20160 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbctrl";
+               power-domains = <&ps_usb>;
+       };
+
+       ps_usb2host0: power-controller@20170 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20170 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2host1: power-controller@20180 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20180 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host1";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_disp_busmux: power-controller@201a8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp_busmux";
+       };
+
+       ps_media: power-controller@201d8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "media";
+       };
+
+       ps_isp: power-controller@201d0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp";
+       };
+
+       ps_msr: power-controller@201e0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msr";
+               power-domains = <&ps_media>;
+       };
+
+       ps_jpg: power-controller@201e8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "jpg";
+               power-domains = <&ps_media>;
+       };
+
+       ps_disp0: power-controller@201b0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0";
+               power-domains = <&ps_disp_busmux>;
+       };
+
+       ps_aes0: power-controller@20100 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20100 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aes0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_sio: power-controller@20108 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20108 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio";
+               power-domains = <&ps_sio_p>;
+               apple,always-on; /* Core device */
+       };
+
+       ps_hsic0_phy: power-controller@20118 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20118 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic0_phy";
+               power-domains = <&ps_usb2host0>;
+       };
+
+       ps_hsic1_phy: power-controller@20120 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20120 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic1_phy";
+               power-domains = <&ps_usb2host0>;
+       };
+
+       ps_hsic2_phy: power-controller@20128 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20128 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic2_phy";
+               power-domains = <&ps_usb2host1>;
+       };
+
+       ps_ispsens0: power-controller@20130 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20130 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens0";
+       };
+
+       ps_ispsens1: power-controller@20138 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20138 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens1";
+       };
+
+       ps_mcc: power-controller@20140 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20140 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcc";
+               apple,always-on; /* Core device */
+       };
+
+       ps_mcu: power-controller@20148 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20148 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcu";
+               apple,always-on; /* Core device */
+       };
+
+       ps_amp: power-controller@20150 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20150 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "amp";
+               apple,always-on; /* Core device */
+       };
+
+       ps_usb2host0_ohci: power-controller@20168 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20168 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0_ohci";
+               power-domains = <&ps_usb2host0>;
+       };
+
+       ps_usb2host1_ohci: power-controller@20178 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20178 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host1_ohci";
+               power-domains = <&ps_usb2host1>;
+       };
+
+       ps_usbotg: power-controller@20188 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20188 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbotg";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_smx: power-controller@20190 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20190 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smx";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_sf: power-controller@20198 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20198 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sf";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_cp: power-controller@201a0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cp";
+               apple,always-on; /* Core device */
+       };
+
+       ps_mipi_dsi: power-controller@201b8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mipi_dsi";
+               power-domains = <&ps_disp_busmux>;
+       };
+
+       ps_dp: power-controller@201c0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dp";
+               power-domains = <&ps_disp0>;
+       };
+
+       ps_disp1: power-controller@201c8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp1";
+               power-domains = <&ps_disp_busmux>;
+       };
+
+       ps_vdec: power-controller@201f0 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "vdec";
+               power-domains = <&ps_media>;
+       };
+
+       ps_venc: power-controller@201f8 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc";
+               power-domains = <&ps_media>;
+       };
+
+       ps_ans: power-controller@20200 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20200 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ans";
+       };
+
+       ps_ans_dll: power-controller@20208 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20208 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ans_dll";
+               power-domains = <&ps_ans>;
+       };
+
+       ps_gfx: power-controller@20218 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20218 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gfx";
+       };
+
+       ps_sep: power-controller@20268 {
+               compatible = "apple,s5l8960x-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20268 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sep";
+               power-domains = <&ps_secuart1>, <&ps_secuart0>;
+               apple,always-on; /* Locked on */
+       };
+};
index 0218eca..d820b0e 100644 (file)
@@ -33,6 +33,8 @@
                        compatible = "apple,cyclone";
                        reg = <0x0 0x0>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       operating-points-v2 = <&cyclone_opp>;
+                       performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
@@ -41,6 +43,8 @@
                        compatible = "apple,cyclone";
                        reg = <0x0 0x1>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       operating-points-v2 = <&cyclone_opp>;
+                       performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
                nonposted-mmio;
                ranges;
 
+               cpufreq: performance-controller@202220000 {
+                       compatible = "apple,s5l8960x-cluster-cpufreq";
+                       reg = <0x2 0x02220000 0 0x1000>;
+                       #performance-domain-cells = <0>;
+               };
+
                serial0: serial@20a0a0000 {
                        compatible = "apple,s5l-uart";
                        reg = <0x2 0x0a0a0000 0x0 0x4000>;
                        /* Use the bootloader-enabled clocks for now. */
                        clocks = <&clkref>, <&clkref>;
                        clock-names = "uart", "clk_uart_baud0";
+                       power-domains = <&ps_uart0>;
                        status = "disabled";
                };
 
+               pmgr: power-management@20e000000 {
+                       compatible = "apple,s5l8960x-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0xe000000 0 0x24000>;
+               };
+
                wdt: watchdog@20e027000 {
                        compatible = "apple,s5l8960x-wdt", "apple,wdt";
                        reg = <0x2 0x0e027000 0x0 0x1000>;
                        reg = <0x2 0x0e100000 0x0 0x100000>;
                        #interrupt-cells = <3>;
                        interrupt-controller;
+                       power-domains = <&ps_aic>;
+               };
+
+               dwi_bl: backlight@20e200010 {
+                       compatible = "apple,s5l8960x-dwi-bl", "apple,dwi-bl";
+                       reg = <0x2 0x0e200010 0x0 0x8>;
+                       power-domains = <&ps_dwi>;
+                       status = "disabled";
                };
 
                pinctrl: pinctrl@20e300000 {
                        compatible = "apple,s5l8960x-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x0e300000 0x0 0x100000>;
+                       power-domains = <&ps_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                             <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
        };
 };
+
+#include "s5l8960x-pmgr.dtsi"
diff --git a/src/arm64/apple/s5l8965x-opp.dtsi b/src/arm64/apple/s5l8965x-opp.dtsi
new file mode 100644 (file)
index 0000000..d34dae7
--- /dev/null
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Operating points for Apple S5L8965X "A7" Rev A SoC, Up to 1392 MHz
+ *
+ * target-type: J71, J72, J73
+ *
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/ {
+       cyclone_opp: opp-table {
+               compatible = "operating-points-v2";
+
+               opp01 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-level = <1>;
+                       clock-latency-ns = <10000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-level = <2>;
+                       clock-latency-ns = <49000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <840000000>;
+                       opp-level = <3>;
+                       clock-latency-ns = <30000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <1128000000>;
+                       opp-level = <4>;
+                       clock-latency-ns = <39500>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <1296000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <45500>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <1392000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <46500>;
+               };
+       };
+};
index 4276bd8..cb42c5f 100644 (file)
        };
 };
 
+&dwi_bl {
+       status = "okay";
+};
+
 &serial0 {
        status = "okay";
 };
diff --git a/src/arm64/apple/s800-0-3-pmgr.dtsi b/src/arm64/apple/s800-0-3-pmgr.dtsi
new file mode 100644 (file)
index 0000000..196b8e7
--- /dev/null
@@ -0,0 +1,757 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * PMGR Power domains for the Apple S8000/3 "A9" SoC
+ *
+ * Copyright (c) 2024 Nick Chan <towinchenmi@gmail.com>
+ */
+
+&pmgr {
+       ps_cpu0: power-controller@80000 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu0";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu1: power-controller@80008 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu1";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpm: power-controller@80040 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80040 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpm";
+               apple,always-on; /* Core device */
+       };
+
+       ps_sio_busif: power-controller@80150 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80150 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_busif";
+       };
+
+       ps_sio_p: power-controller@80158 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80158 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_p";
+               power-domains = <&ps_sio_busif>;
+       };
+
+       ps_sbr: power-controller@80100 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80100 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sbr";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_aic: power-controller@80108 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80108 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aic";
+               apple,always-on; /* Core device */
+       };
+
+       ps_dwi: power-controller@80110 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80110 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dwi";
+       };
+
+       ps_gpio: power-controller@80118 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80118 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gpio";
+       };
+
+       ps_pms: power-controller@80120 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80120 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms";
+               apple,always-on; /* Core device */
+       };
+
+       ps_pcie_ref: power-controller@80148 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80148 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_ref";
+       };
+
+       ps_mca0: power-controller@80168 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80168 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca1: power-controller@80170 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80170 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca2: power-controller@80178 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80178 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca3: power-controller@80180 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80180 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca4: power-controller@80188 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80188 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_pwm0: power-controller@80190 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80190 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pwm0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c0: power-controller@80198 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80198 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c1: power-controller@801a0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c2: power-controller@801a8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c3: power-controller@801b0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi0: power-controller@801b8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi1: power-controller@801c0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi2: power-controller@801c8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi3: power-controller@801d0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart0: power-controller@801d8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart1: power-controller@801e0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart2: power-controller@801e8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart3: power-controller@801f0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart4: power-controller@801f8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_sio: power-controller@80160 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80160 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio";
+               power-domains = <&ps_sio_p>;
+               apple,always-on; /* Core device */
+       };
+
+       ps_hsic0_phy: power-controller@80128 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80128 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic0_phy";
+               power-domains = <&ps_usb2host1>;
+       };
+
+       ps_hsic1_phy: power-controller@80130 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80130 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic1_phy";
+               power-domains = <&ps_usb2host2>;
+       };
+
+       ps_isp_sens0: power-controller@80138 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80138 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens0";
+       };
+
+       ps_isp_sens1: power-controller@80140 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80140 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens1";
+       };
+
+       ps_usb: power-controller@80250 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80250 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb";
+       };
+
+       ps_usbctrl: power-controller@80258 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80258 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbctrl";
+               power-domains = <&ps_usb>;
+       };
+
+       ps_usb2host0: power-controller@80260 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80260 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2host1: power-controller@80270 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80270 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host1";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2host2: power-controller@80280 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80280 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host2";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_rtmux: power-controller@802a8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "rtmux";
+       };
+
+       ps_media: power-controller@802d0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "media";
+       };
+
+       ps_isp: power-controller@802c8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_msr: power-controller@802e0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msr";
+               power-domains = <&ps_media>;
+       };
+
+       ps_jpg: power-controller@802d8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "jpg";
+               power-domains = <&ps_media>;
+       };
+
+       ps_disp0: power-controller@802b0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_pmp: power-controller@802e8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pmp";
+       };
+
+       ps_pms_sram: power-controller@802f0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_sram";
+       };
+
+       ps_uart5: power-controller@80200 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80200 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart5";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart6: power-controller@80208 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80208 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart6";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart7: power-controller@80210 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80210 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart7";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart8: power-controller@80218 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80218 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart8";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_aes0: power-controller@80220 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80220 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aes0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mcc: power-controller@80228 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80228 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcc";
+               apple,always-on; /* Memory cache controller */
+       };
+
+       ps_dcs0: power-controller@80230 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80230 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs0";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs1: power-controller@80238 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80238 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs1";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs2: power-controller@80240 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80240 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs2";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs3: power-controller@80248 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80248 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs3";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_usb2host0_ohci: power-controller@80268 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80268 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0_ohci";
+               power-domains = <&ps_usb2host0>;
+       };
+
+       ps_usb2host1_ohci: power-controller@80278 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80278 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host1_ohci";
+               power-domains = <&ps_usb2host1>;
+       };
+
+       ps_usb2host2_ohci: power-controller@80288 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80288 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host2_ohci";
+               power-domains = <&ps_usb2host2>;
+       };
+
+       ps_usbotg: power-controller@80290 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80290 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbotg";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_smx: power-controller@80298 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80298 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smx";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_sf: power-controller@802a0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sf";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_mipi_dsi: power-controller@802b8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mipi_dsi";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_dp: power-controller@802c0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dp";
+               power-domains = <&ps_disp0>;
+       };
+
+       ps_vdec: power-controller@802f8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "vdec";
+               power-domains = <&ps_media>;
+       };
+
+       ps_venc: power-controller@80308 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80308 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc";
+               power-domains = <&ps_media>;
+       };
+
+       ps_pcie: power-controller@80310 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80310 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie";
+       };
+
+       ps_pcie_aux: power-controller@80318 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80318 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_aux";
+       };
+
+       ps_pcie_link0: power-controller@80320 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80320 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_link0";
+               power-domains = <&ps_pcie>;
+       };
+
+       ps_pcie_link1: power-controller@80328 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80328 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_link1";
+               power-domains = <&ps_pcie>;
+       };
+
+       ps_pcie_link2: power-controller@80330 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80330 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_link2";
+               power-domains = <&ps_pcie>;
+       };
+
+       ps_pcie_link3: power-controller@80338 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80338 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_link3";
+               power-domains = <&ps_pcie>;
+       };
+
+       ps_gfx: power-controller@80340 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80340 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gfx";
+       };
+
+       ps_sep: power-controller@80400 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80400 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sep";
+               apple,always-on; /* Locked on */
+       };
+
+       ps_venc_pipe: power-controller@88000 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe";
+               power-domains = <&ps_venc>;
+       };
+
+       ps_venc_me0: power-controller@88008 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me0";
+       };
+
+       ps_venc_me1: power-controller@88010 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me1";
+       };
+};
+
+&pmgr_mini {
+       ps_aop: power-controller@80000 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop";
+               power-domains = <&ps_aop_busif &ps_aop_cpu &ps_aop_filter>;
+               apple,always-on; /* Always on processor */
+       };
+
+       ps_debug: power-controller@80008 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug";
+       };
+
+       ps_aop_gpio: power-controller@80010 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_gpio";
+               power-domains = <&ps_aop>;
+       };
+
+       ps_aop_cpu: power-controller@80040 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80040 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_cpu";
+       };
+
+       ps_aop_filter: power-controller@80048 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80048 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_filter";
+       };
+
+       ps_aop_busif: power-controller@80050 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80050 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_busif";
+       };
+};
diff --git a/src/arm64/apple/s800-0-3.dtsi b/src/arm64/apple/s800-0-3.dtsi
new file mode 100644 (file)
index 0000000..c0e9ae4
--- /dev/null
@@ -0,0 +1,179 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple S8000/S8003 "A9" SoC
+ *
+ * This file contains parts common to both variants of A9
+ *
+ * Copyright (c) 2022, Konrad Dybcio <konradybcio@kernel.org>
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/apple-aic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/apple.h>
+
+/ {
+       interrupt-parent = <&aic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       clkref: clock-ref {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+               clock-output-names = "clkref";
+       };
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       compatible = "apple,twister";
+                       reg = <0x0 0x0>;
+                       cpu-release-addr = <0 0>; /* To be filled in by loader */
+                       operating-points-v2 = <&twister_opp>;
+                       performance-domains = <&cpufreq>;
+                       enable-method = "spin-table";
+                       device_type = "cpu";
+               };
+
+               cpu1: cpu@1 {
+                       compatible = "apple,twister";
+                       reg = <0x0 0x1>;
+                       cpu-release-addr = <0 0>; /* To be filled in by loader */
+                       operating-points-v2 = <&twister_opp>;
+                       performance-domains = <&cpufreq>;
+                       enable-method = "spin-table";
+                       device_type = "cpu";
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               nonposted-mmio;
+               ranges;
+
+               cpufreq: performance-controller@202220000 {
+                       compatible = "apple,s8000-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
+                       reg = <0x2 0x02220000 0 0x1000>;
+                       #performance-domain-cells = <0>;
+               };
+
+               serial0: serial@20a0c0000 {
+                       compatible = "apple,s5l-uart";
+                       reg = <0x2 0x0a0c0000 0x0 0x4000>;
+                       reg-io-width = <4>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>;
+                       /* Use the bootloader-enabled clocks for now. */
+                       clocks = <&clkref>, <&clkref>;
+                       clock-names = "uart", "clk_uart_baud0";
+                       power-domains = <&ps_uart0>;
+                       status = "disabled";
+               };
+
+               pmgr: power-management@20e000000 {
+                       compatible = "apple,s8000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0xe000000 0 0x8c000>;
+               };
+
+               aic: interrupt-controller@20e100000 {
+                       compatible = "apple,s8000-aic", "apple,aic";
+                       reg = <0x2 0x0e100000 0x0 0x100000>;
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+                       power-domains = <&ps_aic>;
+               };
+
+               dwi_bl: backlight@20e200080 {
+                       compatible = "apple,s8000-dwi-bl", "apple,dwi-bl";
+                       reg = <0x2 0x0e200080 0x0 0x8>;
+                       power-domains = <&ps_dwi>;
+                       status = "disabled";
+               };
+
+               pinctrl_ap: pinctrl@20f100000 {
+                       compatible = "apple,s8000-pinctrl", "apple,pinctrl";
+                       reg = <0x2 0x0f100000 0x0 0x100000>;
+                       power-domains = <&ps_gpio>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_ap 0 0 208>;
+                       apple,npins = <208>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 42 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 43 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 44 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 45 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 46 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 47 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 48 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_aop: pinctrl@2100f0000 {
+                       compatible = "apple,s8000-pinctrl", "apple,pinctrl";
+                       reg = <0x2 0x100f0000 0x0 0x100000>;
+                       power-domains = <&ps_aop_gpio>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_aop 0 0 42>;
+                       apple,npins = <42>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 113 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 114 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 115 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 116 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 117 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 118 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 119 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pmgr_mini: power-management@210200000 {
+                       compatible = "apple,s8000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0x10200000 0 0x84000>;
+               };
+
+               wdt: watchdog@2102b0000 {
+                       compatible = "apple,s8000-wdt", "apple,wdt";
+                       reg = <0x2 0x102b0000 0x0 0x4000>;
+                       clocks = <&clkref>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 4 IRQ_TYPE_LEVEL_HIGH>;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupt-parent = <&aic>;
+               interrupt-names = "phys", "virt";
+               /* Note that A9 doesn't actually have a hypervisor (EL2 is not implemented). */
+               interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
+                            <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
+       };
+};
+
+#include "s800-0-3-pmgr.dtsi"
+
+/*
+ * The A9 was made by two separate fabs on two different process
+ * nodes: Samsung made the S8000 (APL0898) on 14nm and TSMC made
+ * the S8003 (APL1022) on 16nm. There are some minor differences
+ * such as timing in cpufreq state transistions.
+ */
index 6e9046e..72322f5 100644 (file)
  *
  * Other names: H8P, "Maui"
  *
- * Copyright (c) 2022, Konrad Dybcio <konradybcio@kernel.org>
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
  */
 
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/interrupt-controller/apple-aic.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-#include <dt-bindings/pinctrl/apple.h>
+#include "s800-0-3.dtsi"
 
 / {
-       interrupt-parent = <&aic>;
-       #address-cells = <2>;
-       #size-cells = <2>;
+       twister_opp: opp-table {
+               compatible = "operating-points-v2";
 
-       clkref: clock-ref {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <24000000>;
-               clock-output-names = "clkref";
-       };
-
-       cpus {
-               #address-cells = <2>;
-               #size-cells = <0>;
-
-               cpu0: cpu@0 {
-                       compatible = "apple,twister";
-                       reg = <0x0 0x0>;
-                       cpu-release-addr = <0 0>; /* To be filled in by loader */
-                       enable-method = "spin-table";
-                       device_type = "cpu";
+               opp01 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-level = <1>;
+                       clock-latency-ns = <650>;
                };
-
-               cpu1: cpu@1 {
-                       compatible = "apple,twister";
-                       reg = <0x0 0x1>;
-                       cpu-release-addr = <0 0>; /* To be filled in by loader */
-                       enable-method = "spin-table";
-                       device_type = "cpu";
+               opp02 {
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-level = <2>;
+                       clock-latency-ns = <75000>;
                };
-       };
-
-       soc {
-               compatible = "simple-bus";
-               #address-cells = <2>;
-               #size-cells = <2>;
-               nonposted-mmio;
-               ranges;
-
-               serial0: serial@20a0c0000 {
-                       compatible = "apple,s5l-uart";
-                       reg = <0x2 0x0a0c0000 0x0 0x4000>;
-                       reg-io-width = <4>;
-                       interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 192 IRQ_TYPE_LEVEL_HIGH>;
-                       /* Use the bootloader-enabled clocks for now. */
-                       clocks = <&clkref>, <&clkref>;
-                       clock-names = "uart", "clk_uart_baud0";
-                       status = "disabled";
+               opp03 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-level = <3>;
+                       clock-latency-ns = <27000>;
                };
-
-               aic: interrupt-controller@20e100000 {
-                       compatible = "apple,s8000-aic", "apple,aic";
-                       reg = <0x2 0x0e100000 0x0 0x100000>;
-                       #interrupt-cells = <3>;
-                       interrupt-controller;
+               opp04 {
+                       opp-hz = /bits/ 64 <912000000>;
+                       opp-level = <4>;
+                       clock-latency-ns = <32000>;
                };
-
-               pinctrl_ap: pinctrl@20f100000 {
-                       compatible = "apple,s8000-pinctrl", "apple,pinctrl";
-                       reg = <0x2 0x0f100000 0x0 0x100000>;
-
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       gpio-ranges = <&pinctrl_ap 0 0 208>;
-                       apple,npins = <208>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-                       interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 42 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 43 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 44 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 45 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 46 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 47 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 48 IRQ_TYPE_LEVEL_HIGH>;
+               opp05 {
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <35000>;
                };
-
-               pinctrl_aop: pinctrl@2100f0000 {
-                       compatible = "apple,s8000-pinctrl", "apple,pinctrl";
-                       reg = <0x2 0x100f0000 0x0 0x100000>;
-
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       gpio-ranges = <&pinctrl_aop 0 0 42>;
-                       apple,npins = <42>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-                       interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 113 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 114 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 115 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 116 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 117 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 118 IRQ_TYPE_LEVEL_HIGH>,
-                                    <AIC_IRQ 119 IRQ_TYPE_LEVEL_HIGH>;
+               opp06 {
+                       opp-hz = /bits/ 64 <1512000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <45000>;
                };
-
-               wdt: watchdog@2102b0000 {
-                       compatible = "apple,s8000-wdt", "apple,wdt";
-                       reg = <0x2 0x102b0000 0x0 0x4000>;
-                       clocks = <&clkref>;
-                       interrupt-parent = <&aic>;
-                       interrupts = <AIC_IRQ 4 IRQ_TYPE_LEVEL_HIGH>;
+               opp07 {
+                       opp-hz = /bits/ 64 <1800000000>;
+                       opp-level = <7>;
+                       clock-latency-ns = <58000>;
                };
-       };
-
-       timer {
-               compatible = "arm,armv8-timer";
-               interrupt-parent = <&aic>;
-               interrupt-names = "phys", "virt";
-               /* Note that A9 doesn't actually have a hypervisor (EL2 is not implemented). */
-               interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
-                            <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
+#if 0
+               /* Not available until CPU deep sleep is implemented */
+               opp08 {
+                       opp-hz = /bits/ 64 <1844000000>;
+                       opp-level = <8>;
+                       clock-latency-ns = <58000>;
+                       turbo-mode;
+               };
+#endif
        };
 };
 
 /*
  * The A9 was made by two separate fabs on two different process
  * nodes: Samsung made the S8000 (APL0898) on 14nm and TSMC made
- * the S8003 (APL1022) on 16nm. While they are seemingly the same,
- * they do have distinct part numbers and devices using them have
- * distinct model names. There are currently no known differences
- * between these as far as Linux is concerned, but let's keep things
- * structured properly to make it easier to alter the behaviour of
- * one of the chips if need be.
+ * the S8003 (APL1022) on 16nm. There are some minor differences
+ * such as timing in cpufreq state transistions.
  */
index e94d0e7..91b06e1 100644 (file)
@@ -24,6 +24,7 @@
                framebuffer0: framebuffer@0 {
                        compatible = "apple,simple-framebuffer", "simple-framebuffer";
                        reg = <0 0 0 0>; /* To be filled by loader */
+                       power-domains = <&ps_disp0 &ps_dp0>;
                        /* Format properties will be added by loader */
                        status = "disabled";
                };
diff --git a/src/arm64/apple/s8001-j98a-j99a.dtsi b/src/arm64/apple/s8001-j98a-j99a.dtsi
new file mode 100644 (file)
index 0000000..e66a4c1
--- /dev/null
@@ -0,0 +1,26 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple iPad Pro (12.9-inch)
+ *
+ * This file contains parts common to iPad Pro (12.9-inch).
+ *
+ * target-type: J98a, J99a
+ *
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+&ps_dcs4 {
+       apple,always-on; /* LPDDR4 interface */
+};
+
+&ps_dcs5 {
+       apple,always-on; /* LPDDR4 interface */
+};
+
+&ps_dcs6 {
+       apple,always-on; /* LPDDR4 interface */
+};
+
+&ps_dcs7 {
+       apple,always-on; /* LPDDR4 interface */
+};
index 6d6b841..162eca0 100644 (file)
@@ -7,6 +7,7 @@
 /dts-v1/;
 
 #include "s8001-pro.dtsi"
+#include "s8001-j98a-j99a.dtsi"
 
 / {
        compatible = "apple,j98a", "apple,s8001", "apple,arm-platform";
index d20194b..7b76582 100644 (file)
@@ -7,6 +7,7 @@
 /dts-v1/;
 
 #include "s8001-pro.dtsi"
+#include "s8001-j98a-j99a.dtsi"
 
 / {
        compatible = "apple,j99a", "apple,s8001", "apple,arm-platform";
diff --git a/src/arm64/apple/s8001-pmgr.dtsi b/src/arm64/apple/s8001-pmgr.dtsi
new file mode 100644 (file)
index 0000000..859ab77
--- /dev/null
@@ -0,0 +1,822 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * PMGR Power domains for the Apple S8001 "A9X" SoC
+ *
+ * Copyright (c) 2024 Nick Chan <towinchenmi@gmail.com>
+ */
+
+&pmgr {
+       ps_cpu0: power-controller@80000 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu0";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu1: power-controller@80008 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu1";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpm: power-controller@80040 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80040 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpm";
+               apple,always-on; /* Core device */
+       };
+
+       ps_sio_busif: power-controller@80148 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80148 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_busif";
+       };
+
+       ps_sio_p: power-controller@80150 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80150 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_p";
+               power-domains = <&ps_sio_busif>;
+       };
+
+       ps_sbr: power-controller@80100 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80100 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sbr";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_aic: power-controller@80108 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80108 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aic";
+               apple,always-on; /* Core device */
+       };
+
+       ps_dwi: power-controller@80110 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80110 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dwi";
+       };
+
+       ps_gpio: power-controller@80118 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80118 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gpio";
+       };
+
+       ps_pcie_ref: power-controller@80140 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80140 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_ref";
+       };
+
+       ps_mca0: power-controller@80160 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80160 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca1: power-controller@80168 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80168 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca2: power-controller@80170 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80170 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca3: power-controller@80178 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80178 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca4: power-controller@80180 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80180 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_pwm0: power-controller@80188 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80188 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pwm0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c0: power-controller@80190 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80190 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c1: power-controller@80198 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80198 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c2: power-controller@801a0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c3: power-controller@801a8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi0: power-controller@801b0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi1: power-controller@801b8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi2: power-controller@801c0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi3: power-controller@801c8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart0: power-controller@801d0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart1: power-controller@801d8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart2: power-controller@801e0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart3: power-controller@801e8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart4: power-controller@801f0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart5: power-controller@801f8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart5";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_sio: power-controller@80158 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80158 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio";
+               power-domains = <&ps_sio_p>;
+               apple,always-on; /* Core device */
+       };
+
+       ps_hsic0_phy: power-controller@80128 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80128 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic0_phy";
+               power-domains = <&ps_usb2host1>;
+       };
+
+       ps_isp_sens0: power-controller@80130 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80130 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens0";
+       };
+
+       ps_isp_sens1: power-controller@80138 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80138 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens1";
+       };
+
+       ps_pms: power-controller@80120 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80120 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms";
+               apple,always-on; /* Core device */
+       };
+
+       ps_usb: power-controller@80278 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80278 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb";
+       };
+
+       ps_usbctrl: power-controller@80280 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80280 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbctrl";
+               power-domains = <&ps_usb>;
+       };
+
+       ps_usb2host0: power-controller@80288 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80288 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2host1: power-controller@80298 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80298 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host1";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2host2: power-controller@802a8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host2";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_rtmux: power-controller@802d0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "rtmux";
+               apple,always-on; /* Core device */
+       };
+
+       ps_disp1mux: power-controller@802e8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp1mux";
+       };
+
+       ps_disp0: power-controller@802d8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_disp1: power-controller@802f0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp1";
+               power-domains = <&ps_disp1mux>;
+       };
+
+       ps_uart6: power-controller@80200 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80200 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart6";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart7: power-controller@80208 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80208 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart7";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart8: power-controller@80210 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80210 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart8";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_aes0: power-controller@80218 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80218 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aes0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mcc: power-controller@80230 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80230 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcc";
+               apple,always-on; /* Memory cache controller */
+       };
+
+       ps_dcs0: power-controller@80238 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80238 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs0";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs1: power-controller@80240 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80240 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs1";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs2: power-controller@80248 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80248 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs2";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs3: power-controller@80250 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80250 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs3";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs4: power-controller@80258 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80258 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs4";
+       };
+
+       ps_dcs5: power-controller@80260 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80260 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs5";
+       };
+
+       ps_dcs6: power-controller@80268 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80268 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs6";
+       };
+
+       ps_dcs7: power-controller@80270 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80270 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs7";
+       };
+
+       ps_usb2host0_ohci: power-controller@80290 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80290 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0_ohci";
+               power-domains = <&ps_usb2host0>;
+       };
+
+       ps_usbotg: power-controller@802b8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbotg";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_smx: power-controller@802c0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smx";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_sf: power-controller@802c8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sf";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_dp0: power-controller@802e0 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dp0";
+               power-domains = <&ps_disp0>;
+       };
+
+       ps_dp1: power-controller@802f8 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dp1";
+               power-domains = <&ps_disp1>;
+       };
+
+       ps_dpa0: power-controller@80220 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80220 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dpa0";
+       };
+
+       ps_dpa1: power-controller@80228 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80228 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dpa1";
+       };
+
+       ps_media: power-controller@80308 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80308 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "media";
+       };
+
+       ps_isp: power-controller@80300 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80300 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_msr: power-controller@80318 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80318 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msr";
+               power-domains = <&ps_media>;
+       };
+
+       ps_jpg: power-controller@80310 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80310 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "jpg";
+               power-domains = <&ps_media>;
+       };
+
+       ps_venc: power-controller@80340 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80340 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc";
+               power-domains = <&ps_media>;
+       };
+
+       ps_pcie: power-controller@80348 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80348 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie";
+       };
+
+       ps_srs: power-controller@80390 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80390 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "srs";
+               power-domains = <&ps_media>;
+       };
+
+       ps_pcie_aux: power-controller@80350 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80350 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_aux";
+       };
+
+       ps_pcie_link0: power-controller@80358 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80358 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_link0";
+               power-domains = <&ps_pcie>;
+       };
+
+       ps_pcie_link1: power-controller@80360 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80360 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_link1";
+               power-domains = <&ps_pcie>;
+       };
+
+       ps_pcie_link2: power-controller@80368 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80368 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_link2";
+               power-domains = <&ps_pcie>;
+       };
+
+       ps_pcie_link3: power-controller@80370 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80370 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_link3";
+               power-domains = <&ps_pcie>;
+       };
+
+       ps_pcie_link4: power-controller@80378 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80378 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_link4";
+               power-domains = <&ps_pcie>;
+       };
+
+       ps_pcie_link5: power-controller@80380 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80380 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_link5";
+               power-domains = <&ps_pcie>;
+       };
+
+       ps_vdec: power-controller@80330 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80330 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "vdec";
+               power-domains = <&ps_media>;
+       };
+
+       ps_gfx: power-controller@80388 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80388 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gfx";
+       };
+
+       ps_pmp: power-controller@80320 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80320 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pmp";
+       };
+
+       ps_pms_sram: power-controller@80328 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80328 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_sram";
+       };
+
+       ps_sep: power-controller@80400 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80400 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sep";
+               apple,always-on; /* Locked on*/
+       };
+
+       ps_venc_pipe: power-controller@88000 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe";
+               power-domains = <&ps_venc>;
+       };
+
+       ps_venc_me0: power-controller@88008 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me0";
+       };
+
+       ps_venc_me1: power-controller@88010 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me1";
+       };
+};
+
+&pmgr_mini {
+       ps_aop: power-controller@80000 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop";
+               power-domains = <&ps_aop_cpu &ps_aop_filter &ps_aop_busif>;
+               apple,always-on; /* Always on processor */
+       };
+
+       ps_debug: power-controller@80008 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug";
+       };
+
+       ps_aop_gpio: power-controller@80010 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_gpio";
+       };
+
+       ps_aop_cpu: power-controller@80040 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80040 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_cpu";
+       };
+
+       ps_aop_filter: power-controller@80048 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80048 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_filter";
+       };
+
+       ps_aop_busif: power-controller@80050 {
+               compatible = "apple,s8000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80050 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_busif";
+       };
+};
index 23ee323..d56d49c 100644 (file)
@@ -32,6 +32,8 @@
                        compatible = "apple,twister";
                        reg = <0x0 0x0>;
                        cpu-release-addr = <0 0>; /* To be filled in by loader */
+                       operating-points-v2 = <&twister_opp>;
+                       performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
                        compatible = "apple,twister";
                        reg = <0x0 0x1>;
                        cpu-release-addr = <0 0>; /* To be filled in by loader */
+                       operating-points-v2 = <&twister_opp>;
+                       performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
        };
 
+       twister_opp: opp-table {
+               compatible = "operating-points-v2";
+
+               opp01 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-level = <1>;
+                       clock-latency-ns = <800>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-level = <2>;
+                       clock-latency-ns = <53000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <792000000>;
+                       opp-level = <3>;
+                       clock-latency-ns = <18000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <1080000000>;
+                       opp-level = <4>;
+                       clock-latency-ns = <21000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <1440000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <25000>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <1800000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <33000>;
+               };
+               opp07 {
+                       opp-hz = /bits/ 64 <2160000000>;
+                       opp-level = <7>;
+                       clock-latency-ns = <45000>;
+               };
+#if 0
+               /* Not available until CPU deep sleep is implemented */
+               opp08 {
+                       opp-hz = /bits/ 64 <2160000000>;
+                       opp-level = <8>;
+                       clock-latency-ns = <45000>;
+                       turbo-mode;
+               };
+#endif
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                nonposted-mmio;
                ranges;
 
+               cpufreq: performance-controller@202220000 {
+                       compatible = "apple,s8000-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
+                       reg = <0x2 0x02220000 0 0x1000>;
+                       #performance-domain-cells = <0>;
+               };
+
                serial0: serial@20a0c0000 {
                        compatible = "apple,s5l-uart";
                        reg = <0x2 0x0a0c0000 0x0 0x4000>;
                        /* Use the bootloader-enabled clocks for now. */
                        clocks = <&clkref>, <&clkref>;
                        clock-names = "uart", "clk_uart_baud0";
+                       power-domains = <&ps_uart0>;
                        status = "disabled";
                };
 
+               pmgr: power-management@20e000000 {
+                       compatible = "apple,s8000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0xe000000 0 0x8c000>;
+               };
+
                aic: interrupt-controller@20e100000 {
                        compatible = "apple,s8000-aic", "apple,aic";
                        reg = <0x2 0x0e100000 0x0 0x100000>;
                        #interrupt-cells = <3>;
                        interrupt-controller;
+                       power-domains = <&ps_aic>;
                };
 
                pinctrl_ap: pinctrl@20f100000 {
                        compatible = "apple,s8000-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x0f100000 0x0 0x100000>;
+                       power-domains = <&ps_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                pinctrl_aop: pinctrl@2100f0000 {
                        compatible = "apple,s8000-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x100f0000 0x0 0x100000>;
+                       power-domains = <&ps_aop_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                                     <AIC_IRQ 134 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               pmgr_mini: power-management@210200000 {
+                       compatible = "apple,s8000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0x10200000 0 0x84000>;
+               };
+
                wdt: watchdog@2102b0000 {
                        compatible = "apple,s8000-wdt", "apple,wdt";
                        reg = <0x2 0x102b0000 0x0 0x4000>;
                             <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
        };
 };
+
+#include "s8001-pmgr.dtsi"
index 7e4ad4f..79df5c7 100644 (file)
@@ -4,18 +4,65 @@
  *
  * Other names: H8P, "Malta"
  *
- * Copyright (c) 2022, Konrad Dybcio <konradybcio@kernel.org>
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
  */
 
-#include "s8000.dtsi"
+#include "s800-0-3.dtsi"
+
+/ {
+       twister_opp: opp-table {
+               compatible = "operating-points-v2";
+
+               opp01 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-level = <1>;
+                       clock-latency-ns = <500>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-level = <2>;
+                       clock-latency-ns = <45000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-level = <3>;
+                       clock-latency-ns = <22000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <912000000>;
+                       opp-level = <4>;
+                       clock-latency-ns = <25000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <28000>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <1512000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <35000>;
+               };
+               opp07 {
+                       opp-hz = /bits/ 64 <1800000000>;
+                       opp-level = <7>;
+                       clock-latency-ns = <38000>;
+               };
+#if 0
+               /* Not available until CPU deep sleep is implemented */
+               opp08 {
+                       opp-hz = /bits/ 64 <1844000000>;
+                       opp-level = <8>;
+                       clock-latency-ns = <38000>;
+                       turbo-mode;
+               };
+#endif
+       };
+};
 
 /*
  * The A9 was made by two separate fabs on two different process
  * nodes: Samsung made the S8000 (APL0898) on 14nm and TSMC made
- * the S8003 (APL1022) on 16nm. While they are seemingly the same,
- * they do have distinct part numbers and devices using them have
- * distinct model names. There are currently no known differences
- * between these as far as Linux is concerned, but let's keep things
- * structured properly to make it easier to alter the behaviour of
- * one of the chips if need be.
+ * the S8003 (APL1022) on 16nm. There are some minor differences
+ * such as timing in cpufreq state transistions.
  */
index 49b04db..1dcf80c 100644 (file)
@@ -47,3 +47,7 @@
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_mipi_dsi>;
+};
index 32570ed..c1701e8 100644 (file)
@@ -41,3 +41,7 @@
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_dp>;
+};
index a1a5690..deb7c7c 100644 (file)
@@ -47,3 +47,7 @@
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_mipi_dsi>;
+};
diff --git a/src/arm64/apple/spi1-nvram.dtsi b/src/arm64/apple/spi1-nvram.dtsi
new file mode 100644 (file)
index 0000000..3df2fd3
--- /dev/null
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+//
+// Devicetree include for common spi-nor nvram flash.
+//
+// Apple uses a consistent configiguration for the nvram on all known M1* and
+// M2* devices.
+//
+// Copyright The Asahi Linux Contributors
+
+/ {
+       aliases {
+               nvram = &nvram;
+       };
+};
+
+&spi1 {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0x0>;
+               spi-max-frequency = <25000000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       nvram: partition@700000 {
+                               label = "nvram";
+                               /* To be filled by the loader */
+                               reg = <0x0 0x0>;
+                               status = "disabled";
+                       };
+               };
+       };
+};
index fa8ead6..87dfc13 100644 (file)
                clock-output-names = "clkref";
        };
 
+       clk_200m: clock-200m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <200000000>;
+               clock-output-names = "clk_200m";
+       };
+
        /*
         * This is a fabulated representation of the input clock
         * to NCO since we don't know the true clock tree.
index b1c875e..e9b3140 100644 (file)
                status = "disabled";
        };
 
+       spi1: spi@39b104000 {
+               compatible = "apple,t6000-spi", "apple,spi";
+               reg = <0x3 0x9b104000 0x0 0x4000>;
+               interrupt-parent = <&aic>;
+               interrupts = <AIC_IRQ 0 1107 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clocks = <&clk_200m>;
+               pinctrl-0 = <&spi1_pins>;
+               pinctrl-names = "default";
+               power-domains = <&ps_spi1>;
+               status = "disabled";
+       };
+
+       spi3: spi@39b10c000 {
+               compatible = "apple,t6000-spi", "apple,spi";
+               reg = <0x3 0x9b10c000 0x0 0x4000>;
+               interrupt-parent = <&aic>;
+               interrupts = <AIC_IRQ 0 1109 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clocks = <&clkref>;
+               pinctrl-0 = <&spi3_pins>;
+               pinctrl-names = "default";
+               power-domains = <&ps_spi3>;
+               status = "disabled";
+       };
+
        serial0: serial@39b200000 {
                compatible = "apple,s5l-uart";
                reg = <0x3 0x9b200000 0x0 0x1000>;
index b31f1a7..1a994c3 100644 (file)
                        <APPLE_PINMUX(101, 1)>;
        };
 
+       spi1_pins: spi1-pins {
+               pinmux = <APPLE_PINMUX(10, 1)>,
+                       <APPLE_PINMUX(11, 1)>,
+                       <APPLE_PINMUX(32, 1)>,
+                       <APPLE_PINMUX(33, 1)>;
+       };
+
+       spi3_pins: spi3-pins {
+               pinmux = <APPLE_PINMUX(52, 1)>,
+                       <APPLE_PINMUX(53, 1)>,
+                       <APPLE_PINMUX(54, 1)>,
+                       <APPLE_PINMUX(55, 1)>;
+       };
+
        pcie_pins: pcie-pins {
                pinmux = <APPLE_PINMUX(0, 1)>,
                                <APPLE_PINMUX(1, 1)>,
index 2e471df..22ebc78 100644 (file)
 &fpwm0 {
        status = "okay";
 };
+
+#include "spi1-nvram.dtsi"
index 1e5a19e..d5b985a 100644 (file)
 &pcie0_dart_3 {
        status = "okay";
 };
+
+#include "spi1-nvram.dtsi"
index f60ea4a..7048d73 100644 (file)
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_mipi_dsi>;
+};
+
+&typhoon_opp06 {
+       status = "okay";
+};
index 8984c9e..7b58aa6 100644 (file)
        };
 };
 
+&dwi_bl {
+       status = "okay";
+};
+
 &serial0 {
        status = "okay";
 };
index 2231db6..2ec9e06 100644 (file)
@@ -20,6 +20,7 @@
                framebuffer0: framebuffer@0 {
                        compatible = "apple,simple-framebuffer", "simple-framebuffer";
                        reg = <0 0 0 0>; /* To be filled by loader */
+                       power-domains = <&ps_disp0 &ps_dp>;
                        /* Format properties will be added by loader */
                        status = "disabled";
                };
@@ -29,3 +30,7 @@
 &serial6 {
        status = "okay";
 };
+
+&typhoon_opp06 {
+       status = "okay";
+};
index c64ddc4..cc235c5 100644 (file)
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_dp>;
+};
+
+&typhoon_opp06 {
+       status = "okay";
+};
+
+&typhoon_opp07 {
+       status = "okay";
+};
index 9c55d33..99eb8a2 100644 (file)
@@ -46,3 +46,7 @@
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_mipi_dsi>;
+};
diff --git a/src/arm64/apple/t7000-pmgr.dtsi b/src/arm64/apple/t7000-pmgr.dtsi
new file mode 100644 (file)
index 0000000..5948fa7
--- /dev/null
@@ -0,0 +1,641 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * PMGR Power domains for the Apple T7000 "A8" SoC
+ *
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+&pmgr {
+       ps_cpu0: power-controller@20000 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu0";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu1: power-controller@20008 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu1";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpm: power-controller@20040 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20040 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpm";
+               apple,always-on; /* Core device */
+       };
+
+       ps_sio_p: power-controller@201f8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_p";
+       };
+
+       ps_lio: power-controller@20100 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20100 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "lio";
+               apple,always-on; /* Core device */
+       };
+
+       ps_iomux: power-controller@20108 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20108 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "iomux";
+               apple,always-on; /* Core device */
+       };
+
+       ps_aic: power-controller@20110 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20110 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aic";
+               apple,always-on; /* Core device */
+       };
+
+       ps_debug: power-controller@20118 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20118 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug";
+       };
+
+       ps_dwi: power-controller@20120 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20120 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dwi";
+       };
+
+       ps_gpio: power-controller@20128 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20128 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gpio";
+       };
+
+       ps_mca0: power-controller@20130 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20130 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca1: power-controller@20138 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20138 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca2: power-controller@20140 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20140 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca3: power-controller@20148 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20148 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca4: power-controller@20150 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20150 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_pwm0: power-controller@20158 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20158 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pwm0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c0: power-controller@20160 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20160 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c1: power-controller@20168 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20168 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c2: power-controller@20170 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20170 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c3: power-controller@20178 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20178 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi0: power-controller@20180 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20180 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi1: power-controller@20188 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20188 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi2: power-controller@20190 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20190 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi3: power-controller@20198 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20198 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart0: power-controller@201a0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart1: power-controller@201a8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart2: power-controller@201b0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart3: power-controller@201b8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart4: power-controller@201c0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart5: power-controller@201c8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart5";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart6: power-controller@201d0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart6";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart7: power-controller@201d8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart7";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart8: power-controller@201e0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart8";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_aes0: power-controller@201e8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aes0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_sio: power-controller@201f0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio";
+               power-domains = <&ps_sio_p>;
+               apple,always-on; /* Core device */
+       };
+
+       ps_usb: power-controller@20248 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20248 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb";
+       };
+
+       ps_usbctrl: power-controller@20250 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20250 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbctrl";
+               power-domains = <&ps_usb>;
+       };
+
+       ps_usb2host0: power-controller@20258 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20258 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2host1: power-controller@20268 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20268 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host1";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2host2: power-controller@20278 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20278 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host2";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_disp_busmux: power-controller@202a8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp_busmux";
+       };
+
+       ps_media: power-controller@202d8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "media";
+       };
+
+       ps_isp: power-controller@202d0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp";
+       };
+
+       ps_msr: power-controller@202e0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msr";
+               power-domains = <&ps_media>;
+       };
+
+       ps_jpg: power-controller@202e8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "jpg";
+               power-domains = <&ps_media>;
+       };
+
+       ps_disp0: power-controller@202b0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0";
+               power-domains = <&ps_disp_busmux>;
+       };
+
+       ps_disp1: power-controller@202c8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp1";
+               power-domains = <&ps_disp_busmux>;
+       };
+
+       ps_pcie_ref: power-controller@20220 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20220 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_ref";
+       };
+
+       ps_hsic0_phy: power-controller@20200 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20200 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic0_phy";
+               power-domains = <&ps_usb2host1>;
+       };
+
+       ps_hsic1_phy: power-controller@20208 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20208 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic1_phy";
+               power-domains = <&ps_usb2host2>;
+       };
+
+       ps_ispsens0: power-controller@20210 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20210 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens0";
+       };
+
+       ps_ispsens1: power-controller@20218 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20218 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens1";
+       };
+
+       ps_mcc: power-controller@20230 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20230 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcc";
+               apple,always-on; /* Memory cache controller */
+       };
+
+       ps_mcu: power-controller@20238 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20238 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcu";
+               apple,always-on; /* Core device */
+       };
+
+       ps_amp: power-controller@20240 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20240 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "amp";
+               apple,always-on; /* Core device */
+       };
+
+       ps_usb2host0_ohci: power-controller@20260 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20260 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0_ohci";
+               power-domains = <&ps_usb2host0>;
+       };
+
+       ps_usbotg: power-controller@20288 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20288 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbotg";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_smx: power-controller@20290 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20290 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smx";
+               apple,always-on; /* Apple Fabric, critical block */
+       };
+
+       ps_sf: power-controller@20298 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20298 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sf";
+               apple,always-on; /* Apple Fabric, critical block */
+       };
+
+       ps_cp: power-controller@202a0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cp";
+               apple,always-on; /* Core device */
+       };
+
+       ps_mipi_dsi: power-controller@202b8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mipi_dsi";
+               power-domains = <&ps_disp_busmux>;
+       };
+
+       ps_dp: power-controller@202c0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dp";
+               power-domains = <&ps_disp0>;
+       };
+
+       ps_vdec: power-controller@202f0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "vdec";
+               power-domains = <&ps_media>;
+       };
+
+       ps_ans: power-controller@20318 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20318 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ans";
+       };
+
+       ps_venc: power-controller@20300 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20300 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc";
+               power-domains = <&ps_media>;
+       };
+
+       ps_pcie: power-controller@20308 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20308 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie";
+       };
+
+       ps_pcie_aux: power-controller@20310 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20310 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_aux";
+       };
+
+       ps_gfx: power-controller@20320 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20320 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gfx";
+       };
+
+       ps_sep: power-controller@20400 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20400 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sep";
+               apple,always-on; /* Locked on */
+       };
+
+       ps_venc_pipe: power-controller@21000 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x21000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe";
+               power-domains = <&ps_venc>;
+       };
+
+       ps_venc_me0: power-controller@21008 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x21008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me0";
+               power-domains = <&ps_venc>;
+       };
+
+       ps_venc_me1: power-controller@21010 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x21010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me1";
+               power-domains = <&ps_venc>;
+       };
+};
index a7cc29e..85a34dc 100644 (file)
@@ -33,6 +33,8 @@
                        compatible = "apple,typhoon";
                        reg = <0x0 0x0>;
                        cpu-release-addr = <0 0>; /* To be filled in by loader */
+                       performance-domains = <&cpufreq>;
+                       operating-points-v2 = <&typhoon_opp>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
                        compatible = "apple,typhoon";
                        reg = <0x0 0x1>;
                        cpu-release-addr = <0 0>; /* To be filled in by loader */
+                       performance-domains = <&cpufreq>;
+                       operating-points-v2 = <&typhoon_opp>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
        };
 
+       typhoon_opp: opp-table {
+               compatible = "operating-points-v2";
+
+               opp01 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-level = <1>;
+                       clock-latency-ns = <300>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-level = <2>;
+                       clock-latency-ns = <50000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-level = <3>;
+                       clock-latency-ns = <29000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <840000000>;
+                       opp-level = <4>;
+                       clock-latency-ns = <29000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <1128000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <36000>;
+               };
+               typhoon_opp06: opp06 {
+                       opp-hz = /bits/ 64 <1392000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <42000>;
+                       status = "disabled"; /* Not available on N102 */
+               };
+               typhoon_opp07: opp07 {
+                       opp-hz = /bits/ 64 <1512000000>;
+                       opp-level = <7>;
+                       clock-latency-ns = <49000>;
+                       status = "disabled"; /* J96 and J97 only */
+               };
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                nonposted-mmio;
                ranges;
 
+               cpufreq: performance-controller@202220000 {
+                       compatible = "apple,t7000-cluster-cpufreq", "apple,s5l8960x-cluster-cpufreq";
+                       reg = <0x2 0x02220000 0 0x1000>;
+                       #performance-domain-cells = <0>;
+               };
+
                serial0: serial@20a0c0000 {
                        compatible = "apple,s5l-uart";
                        reg = <0x2 0x0a0c0000 0x0 0x4000>;
                        /* Use the bootloader-enabled clocks for now. */
                        clocks = <&clkref>, <&clkref>;
                        clock-names = "uart", "clk_uart_baud0";
+                       power-domains = <&ps_uart0>;
                        status = "disabled";
                };
 
                        /* Use the bootloader-enabled clocks for now. */
                        clocks = <&clkref>, <&clkref>;
                        clock-names = "uart", "clk_uart_baud0";
+                       power-domains = <&ps_uart6>;
                        status = "disabled";
                };
 
+               pmgr: power-management@20e000000 {
+                       compatible = "apple,t7000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0xe000000 0 0x24000>;
+               };
+
                wdt: watchdog@20e027000 {
                        compatible = "apple,t7000-wdt", "apple,wdt";
                        reg = <0x2 0x0e027000 0x0 0x1000>;
                        reg = <0x2 0x0e100000 0x0 0x100000>;
                        #interrupt-cells = <3>;
                        interrupt-controller;
+                       power-domains = <&ps_aic>;
+               };
+
+               dwi_bl: backlight@20e200010 {
+                       compatible = "apple,t7000-dwi-bl", "apple,dwi-bl";
+                       reg = <0x2 0x0e200010 0x0 0x8>;
+                       power-domains = <&ps_dwi>;
+                       status = "disabled";
                };
 
                pinctrl: pinctrl@20e300000 {
                        compatible = "apple,t7000-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x0e300000 0x0 0x100000>;
+                       power-domains = <&ps_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                             <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
        };
 };
+
+#include "t7000-pmgr.dtsi"
index 19fabd4..e4ec8c1 100644 (file)
@@ -20,6 +20,7 @@
                framebuffer0: framebuffer@0 {
                        compatible = "apple,simple-framebuffer", "simple-framebuffer";
                        reg = <0 0 0 0>; /* To be filled by loader */
+                       power-domains = <&ps_disp0 &ps_dp>;
                        /* Format properties will be added by loader */
                        status = "disabled";
                };
diff --git a/src/arm64/apple/t7001-pmgr.dtsi b/src/arm64/apple/t7001-pmgr.dtsi
new file mode 100644 (file)
index 0000000..7321cfd
--- /dev/null
@@ -0,0 +1,650 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * PMGR Power domains for the Apple T7001 "A8X" SoC
+ *
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+&pmgr {
+       ps_cpu0: power-controller@20000 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu0";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu1: power-controller@20008 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu1";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu2: power-controller@20010 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu2";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpm: power-controller@20040 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20040 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpm";
+               apple,always-on; /* Core device */
+       };
+
+       ps_sio_p: power-controller@201f8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_p";
+       };
+
+       ps_lio: power-controller@20100 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20100 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "lio";
+               apple,always-on; /* Core device */
+       };
+
+       ps_iomux: power-controller@20108 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20108 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "iomux";
+               apple,always-on; /* Core device */
+       };
+
+       ps_aic: power-controller@20110 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20110 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aic";
+               apple,always-on; /* Core device */
+       };
+
+       ps_debug: power-controller@20118 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20118 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug";
+       };
+
+       ps_dwi: power-controller@20120 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20120 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dwi";
+       };
+
+       ps_gpio: power-controller@20128 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20128 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gpio";
+       };
+
+       ps_mca0: power-controller@20130 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20130 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca1: power-controller@20138 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20138 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca2: power-controller@20140 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20140 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca3: power-controller@20148 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20148 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca4: power-controller@20150 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20150 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_pwm0: power-controller@20158 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20158 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pwm0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c0: power-controller@20160 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20160 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c1: power-controller@20168 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20168 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c2: power-controller@20170 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20170 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c3: power-controller@20178 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20178 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi0: power-controller@20180 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20180 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi1: power-controller@20188 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20188 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi2: power-controller@20190 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20190 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi3: power-controller@20198 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20198 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart0: power-controller@201a0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart1: power-controller@201a8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart2: power-controller@201b0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart3: power-controller@201b8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart4: power-controller@201c0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart5: power-controller@201c8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart5";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart6: power-controller@201d0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart6";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart7: power-controller@201d8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart7";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart8: power-controller@201e0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart8";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_aes0: power-controller@201e8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aes0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_sio: power-controller@201f0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x201f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio";
+               power-domains = <&ps_sio_p>;
+               apple,always-on; /* Core device */
+       };
+
+       ps_usb: power-controller@20248 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20248 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb";
+       };
+
+       ps_usbctrl: power-controller@20250 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20250 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbctrl";
+               power-domains = <&ps_usb>;
+       };
+
+       ps_usb2host0: power-controller@20258 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20258 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2host1: power-controller@20268 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20268 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host1";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2host2: power-controller@20278 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20278 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host2";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_disp_busmux: power-controller@202a8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp_busmux";
+       };
+
+       ps_disp1_busmux: power-controller@202c0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp1_busmux";
+       };
+
+       ps_media: power-controller@202d8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "media";
+       };
+
+       ps_isp: power-controller@202d0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp";
+       };
+
+       ps_msr: power-controller@202e0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msr";
+               power-domains = <&ps_media>;
+       };
+
+       ps_jpg: power-controller@202e8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "jpg";
+               power-domains = <&ps_media>;
+       };
+
+       ps_disp0: power-controller@202b0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0";
+               power-domains = <&ps_disp_busmux>;
+       };
+
+       ps_disp1: power-controller@202c8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp1";
+               power-domains = <&ps_disp1_busmux>;
+       };
+
+       ps_pcie_ref: power-controller@20220 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20220 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_ref";
+       };
+
+       ps_hsic0_phy: power-controller@20200 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20200 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic0_phy";
+               power-domains = <&ps_usb2host1>;
+       };
+
+       ps_hsic1_phy: power-controller@20208 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20208 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic1_phy";
+               power-domains = <&ps_usb2host2>;
+       };
+
+       ps_ispsens0: power-controller@20210 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20210 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens0";
+       };
+
+       ps_ispsens1: power-controller@20218 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20218 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens1";
+       };
+
+       ps_mcc: power-controller@20230 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20230 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcc";
+               apple,always-on; /* Memory cache controller */
+       };
+
+       ps_mcu: power-controller@20238 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20238 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcu";
+               apple,always-on; /* Core device */
+       };
+
+       ps_amp: power-controller@20240 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20240 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "amp";
+               apple,always-on; /* Core device */
+       };
+
+       ps_usb2host0_ohci: power-controller@20260 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20260 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0_ohci";
+               power-domains = <&ps_usb2host0>;
+       };
+
+       ps_usbotg: power-controller@20288 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20288 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbotg";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_smx: power-controller@20290 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20290 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smx";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_sf: power-controller@20298 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20298 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sf";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_cp: power-controller@202a0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cp";
+               apple,always-on; /* Core device */
+       };
+
+       ps_dp: power-controller@202b8 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dp";
+               power-domains = <&ps_disp0>;
+       };
+
+       ps_vdec: power-controller@202f0 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x202f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "vdec";
+               power-domains = <&ps_media>;
+       };
+
+       ps_ans: power-controller@20318 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20318 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ans";
+       };
+
+       ps_venc: power-controller@20300 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20300 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc";
+               power-domains = <&ps_media>;
+       };
+
+       ps_pcie: power-controller@20308 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20308 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie";
+       };
+
+       ps_pcie_aux: power-controller@20310 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20310 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_aux";
+       };
+
+       ps_gfx: power-controller@20320 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20320 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gfx";
+       };
+
+       ps_sep: power-controller@20400 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x20400 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sep";
+               apple,always-on; /* Locked on */
+       };
+
+       ps_venc_pipe: power-controller@21000 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x21000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe";
+               power-domains = <&ps_venc>;
+       };
+
+       ps_venc_me0: power-controller@21008 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x21008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me0";
+               power-domains = <&ps_venc>;
+       };
+
+       ps_venc_me1: power-controller@21010 {
+               compatible = "apple,t7000-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x21010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me1";
+               power-domains = <&ps_venc>;
+       };
+};
index a76e034..8e2c67e 100644 (file)
@@ -35,6 +35,8 @@
                        compatible = "apple,typhoon";
                        reg = <0x0 0x0>;
                        cpu-release-addr = <0 0>; /* To be filled in by loader */
+                       performance-domains = <&cpufreq>;
+                       operating-points-v2 = <&typhoon_opp>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
@@ -43,6 +45,8 @@
                        compatible = "apple,typhoon";
                        reg = <0x0 0x1>;
                        cpu-release-addr = <0 0>; /* To be filled in by loader */
+                       performance-domains = <&cpufreq>;
+                       operating-points-v2 = <&typhoon_opp>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
                        compatible = "apple,typhoon";
                        reg = <0x0 0x2>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       performance-domains = <&cpufreq>;
+                       operating-points-v2 = <&typhoon_opp>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
        };
 
+       typhoon_opp: opp-table {
+               compatible = "operating-points-v2";
+
+               opp01 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-level = <1>;
+                       clock-latency-ns = <300>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <396000000>;
+                       opp-level = <2>;
+                       clock-latency-ns = <49000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-level = <3>;
+                       clock-latency-ns = <31000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <840000000>;
+                       opp-level = <4>;
+                       clock-latency-ns = <32000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <1128000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <32000>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <1392000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <37000>;
+               };
+               opp07 {
+                       opp-hz = /bits/ 64 <1512000000>;
+                       opp-level = <7>;
+                       clock-latency-ns = <41000>;
+               };
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                nonposted-mmio;
                ranges;
 
+               cpufreq: performance-controller@202220000 {
+                       compatible = "apple,t7000-cluster-cpufreq", "apple,s5l8960x-cluster-cpufreq";
+                       reg = <0x2 0x02220000 0 0x1000>;
+                       #performance-domain-cells = <0>;
+               };
+
                serial0: serial@20a0c0000 {
                        compatible = "apple,s5l-uart";
                        reg = <0x2 0x0a0c0000 0x0 0x4000>;
                        /* Use the bootloader-enabled clocks for now. */
                        clocks = <&clkref>, <&clkref>;
                        clock-names = "uart", "clk_uart_baud0";
+                       power-domains = <&ps_uart0>;
                        status = "disabled";
                };
 
+               pmgr: power-management@20e000000 {
+                       compatible = "apple,t7000-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0xe000000 0 0x24000>;
+               };
+
                wdt: watchdog@20e027000 {
                        compatible = "apple,t7000-wdt", "apple,wdt";
                        reg = <0x2 0x0e027000 0x0 0x1000>;
                        reg = <0x2 0x0e100000 0x0 0x100000>;
                        #interrupt-cells = <3>;
                        interrupt-controller;
+                       power-domains = <&ps_aic>;
                };
 
                pinctrl: pinctrl@20e300000 {
                        compatible = "apple,t7000-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x0e300000 0x0 0x100000>;
+                       power-domains = <&ps_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                             <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
        };
 };
+
+#include "t7001-pmgr.dtsi"
index 1332fd7..1913b7b 100644 (file)
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0_fe &ps_disp0_be &ps_mipi_dsi>;
+};
+
+&hurricane_opp09 {
+       status = "okay";
+};
+
+&hurricane_opp10 {
+       status = "okay";
+};
index 6613fb5..44dc968 100644 (file)
        };
 };
 
+&dwi_bl {
+       status = "okay";
+};
+
 &serial0 {
        status = "okay";
 };
index 81696c6..1e46e4a 100644 (file)
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0_fe &ps_disp0_be &ps_dp>;
+};
+
+&hurricane_opp09 {
+       status = "okay";
+};
+
+&hurricane_opp10 {
+       status = "okay";
+};
index 6e71c3c..48fdbed 100644 (file)
@@ -45,3 +45,7 @@
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0_fe &ps_disp0_be &ps_mipi_dsi>;
+};
diff --git a/src/arm64/apple/t8010-pmgr.dtsi b/src/arm64/apple/t8010-pmgr.dtsi
new file mode 100644 (file)
index 0000000..6d45108
--- /dev/null
@@ -0,0 +1,772 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * PMGR Power domains for the Apple T8010 "A10" SoC
+ *
+ * Copyright (c) 2024 Nick Chan <towinchenmi@gmail.com>
+ */
+
+&pmgr {
+       ps_cpu0: power-controller@80000 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu0";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu1: power-controller@80008 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu1";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpm: power-controller@80040 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80040 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpm";
+               apple,always-on; /* Core device */
+       };
+
+       ps_sio_busif: power-controller@80160 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80160 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_busif";
+       };
+
+       ps_sio_p: power-controller@80168 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80168 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_p";
+               power-domains = <&ps_sio_busif>;
+       };
+
+       ps_sbr: power-controller@80100 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80100 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sbr";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_aic: power-controller@80108 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80108 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aic";
+               apple,always-on; /* Core device */
+       };
+
+       ps_dwi: power-controller@80110 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80110 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dwi";
+       };
+
+       ps_gpio: power-controller@80118 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80118 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gpio";
+       };
+
+       ps_pms: power-controller@80120 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80120 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms";
+               apple,always-on; /* Core device */
+       };
+
+       ps_pcie_ref: power-controller@80148 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80148 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_ref";
+       };
+
+       ps_socuvd: power-controller@80150 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80150 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "socuvd";
+       };
+
+       ps_mca0: power-controller@80178 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80178 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca1: power-controller@80180 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80180 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca2: power-controller@80188 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80188 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca3: power-controller@80190 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80190 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca4: power-controller@80198 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80198 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_pwm0: power-controller@801a0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pwm0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c0: power-controller@801a8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c1: power-controller@801b0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c2: power-controller@801b8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c3: power-controller@801c0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi0: power-controller@801c8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi1: power-controller@801d0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi2: power-controller@801d8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi3: power-controller@801e0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart0: power-controller@801e8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart1: power-controller@801f0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart2: power-controller@801f8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_sio: power-controller@80170 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80170 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio";
+               power-domains = <&ps_sio_p>;
+               apple,always-on; /* Core device */
+       };
+
+       ps_hsic0_phy: power-controller@80128 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80128 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic0_phy";
+               power-domains = <&ps_usb2host1>;
+       };
+
+       ps_isp_sens0: power-controller@80130 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80130 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens0";
+       };
+
+       ps_isp_sens1: power-controller@80138 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80138 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens1";
+       };
+
+       ps_isp_sens2: power-controller@80140 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80140 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens2";
+       };
+
+       ps_usb: power-controller@80268 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80268 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb";
+       };
+
+       ps_usbctrl: power-controller@80270 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80270 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbctrl";
+               power-domains = <&ps_usb>;
+       };
+
+       ps_usb2host0: power-controller@80278 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80278 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2host1: power-controller@80288 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80288 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host1";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_rtmux: power-controller@802a8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "rtmux";
+       };
+
+       ps_media: power-controller@802d8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "media";
+       };
+
+       ps_isp_sys: power-controller@802d0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sys";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_msr: power-controller@802e8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msr";
+               power-domains = <&ps_media>;
+       };
+
+       ps_jpg: power-controller@802e0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "jpg";
+               power-domains = <&ps_media>;
+       };
+
+       ps_disp0_fe: power-controller@802b0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_fe";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_disp0_be: power-controller@802b8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_be";
+               power-domains = <&ps_disp0_fe>;
+       };
+
+       ps_pmp: power-controller@802f0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pmp";
+       };
+
+       ps_pms_sram: power-controller@802f8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_sram";
+       };
+
+       ps_uart3: power-controller@80200 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80200 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart4: power-controller@80208 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80208 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart5: power-controller@80210 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80210 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart5";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart6: power-controller@80218 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80218 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart6";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart7: power-controller@80220 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80220 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart7";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart8: power-controller@80228 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80228 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart8";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_hfd0: power-controller@80238 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80238 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hfd0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mcc: power-controller@80240 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80240 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcc";
+               apple,always-on; /* Memory cache controller */
+       };
+
+       ps_dcs0: power-controller@80248 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80248 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs0";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs1: power-controller@80250 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80250 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs1";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs2: power-controller@80258 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80258 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs2";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs3: power-controller@80260 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80260 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs3";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_usb2host0_ohci: power-controller@80280 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80280 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0_ohci";
+               power-domains = <&ps_usb2host0>;
+       };
+
+       ps_usbotg: power-controller@80290 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80290 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbotg";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_smx: power-controller@80298 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80298 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smx";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_sf: power-controller@802a0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sf";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_mipi_dsi: power-controller@802c0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mipi_dsi";
+               power-domains = <&ps_disp0_be>;
+       };
+
+       ps_dp: power-controller@802c8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dp";
+               power-domains = <&ps_disp0_be>;
+       };
+
+       ps_venc_sys: power-controller@80310 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80310 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_sys";
+               power-domains = <&ps_media>;
+       };
+
+       ps_pcie: power-controller@80318 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80318 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie";
+       };
+
+       ps_pcie_aux: power-controller@80320 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80320 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_aux";
+       };
+
+       ps_vdec0: power-controller@80300 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80300 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "vdec0";
+               power-domains = <&ps_media>;
+       };
+
+       ps_gfx: power-controller@80328 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80328 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gfx";
+       };
+
+       ps_sep: power-controller@80400 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80400 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sep";
+               apple,always-on; /* Locked on */
+       };
+
+       ps_isp_rsts0: power-controller@84000 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_rsts0";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_rsts1: power-controller@84008 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_rsts1";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_vis: power-controller@84010 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_vis";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_be: power-controller@84018 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_be";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_pearl: power-controller@84020 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84020 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_pearl";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_dprx: power-controller@84028 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84028 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dprx";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_venc_pipe4: power-controller@88000 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe4";
+               power-domains = <&ps_venc_sys>;
+       };
+
+       ps_venc_pipe5: power-controller@88008 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe5";
+               power-domains = <&ps_venc_sys>;
+       };
+
+       ps_venc_me0: power-controller@88010 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me0";
+       };
+
+       ps_venc_me1: power-controller@88018 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me1";
+       };
+};
+
+&pmgr_mini {
+       ps_aop: power-controller@80000 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop";
+               power-domains = <&ps_aop_cpu &ps_aop_busif &ps_aop_filter>;
+               apple,always-on; /* Always on processor */
+       };
+
+       ps_debug: power-controller@80008 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug";
+       };
+
+       ps_aop_gpio: power-controller@80010 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_gpio";
+       };
+
+       ps_aop_cpu: power-controller@80048 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80048 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_cpu";
+       };
+
+       ps_aop_filter: power-controller@80050 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80050 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_filter";
+       };
+
+       ps_aop_busif: power-controller@80058 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80058 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_busif";
+       };
+};
index e3d6a83..17e294b 100644 (file)
@@ -32,6 +32,8 @@
                        compatible = "apple,hurricane-zephyr";
                        reg = <0x0 0x0>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       operating-points-v2 = <&fusion_opp>;
+                       performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
                        compatible = "apple,hurricane-zephyr";
                        reg = <0x0 0x1>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       operating-points-v2 = <&fusion_opp>;
+                       performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
        };
 
+       fusion_opp: opp-table {
+               compatible = "operating-points-v2";
+
+               /*
+                * Apple Fusion Architecture: Hardware big.LITTLE switcher
+                * that use p-state transitions to switch between cores.
+                * Only one type of core can be active at a given time.
+                *
+                * The E-core frequencies are adjusted so performance scales
+                * linearly with reported clock speed.
+                */
+
+               opp01 {
+                       opp-hz = /bits/ 64 <172000000>; /* 300 MHz, E-core */
+                       opp-level = <1>;
+                       clock-latency-ns = <11000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <230000000>; /* 396 MHz, E-core */
+                       opp-level = <2>;
+                       clock-latency-ns = <49000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <425000000>; /* 732 MHz, E-core */
+                       opp-level = <3>;
+                       clock-latency-ns = <13000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <637000000>; /* 1092 MHz, E-core */
+                       opp-level = <4>;
+                       clock-latency-ns = <18000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <756000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <35000>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <1056000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <31000>;
+               };
+               opp07 {
+                       opp-hz = /bits/ 64 <1356000000>;
+                       opp-level = <7>;
+                       clock-latency-ns = <37000>;
+               };
+               opp08 {
+                       opp-hz = /bits/ 64 <1644000000>;
+                       opp-level = <8>;
+                       clock-latency-ns = <39500>;
+               };
+               hurricane_opp09: opp09 {
+                       opp-hz = /bits/ 64 <1944000000>;
+                       opp-level = <9>;
+                       clock-latency-ns = <46000>;
+                       status = "disabled"; /* Not available on N112 */
+               };
+               hurricane_opp10: opp10 {
+                       opp-hz = /bits/ 64 <2244000000>;
+                       opp-level = <10>;
+                       clock-latency-ns = <56000>;
+                       status = "disabled"; /* Not available on N112 */
+               };
+#if 0
+               /* Not available until CPU deep sleep is implemented */
+               hurricane_opp11: opp11 {
+                       opp-hz = /bits/ 64 <2340000000>;
+                       opp-level = <11>;
+                       clock-latency-ns = <56000>;
+                       turbo-mode;
+                       status = "disabled"; /* Not available on N112 */
+               };
+#endif
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                nonposted-mmio;
                ranges;
 
+               cpufreq: performance-controller@202f20000 {
+                       compatible = "apple,t8010-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
+                       reg = <0x2 0x02f20000 0 0x1000>;
+                       #performance-domain-cells = <0>;
+               };
+
                serial0: serial@20a0c0000 {
                        compatible = "apple,s5l-uart";
                        reg = <0x2 0x0a0c0000 0x0 0x4000>;
                        /* Use the bootloader-enabled clocks for now. */
                        clocks = <&clkref>, <&clkref>;
                        clock-names = "uart", "clk_uart_baud0";
+                       power-domains = <&ps_uart0>;
                        status = "disabled";
                };
 
+               pmgr: power-management@20e000000 {
+                       compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0xe000000 0 0x8c000>;
+               };
+
                aic: interrupt-controller@20e100000 {
                        compatible = "apple,t8010-aic", "apple,aic";
                        reg = <0x2 0x0e100000 0x0 0x100000>;
                        #interrupt-cells = <3>;
                        interrupt-controller;
+                       power-domains = <&ps_aic>;
+               };
+
+               dwi_bl: backlight@20e200080 {
+                       compatible = "apple,t8010-dwi-bl", "apple,dwi-bl";
+                       reg = <0x2 0x0e200080 0x0 0x8>;
+                       power-domains = <&ps_dwi>;
+                       status = "disabled";
                };
 
                pinctrl_ap: pinctrl@20f100000 {
                        compatible = "apple,t8010-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x0f100000 0x0 0x100000>;
+                       power-domains = <&ps_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                pinctrl_aop: pinctrl@2100f0000 {
                        compatible = "apple,t8010-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x100f0000 0x0 0x100000>;
+                       power-domains = <&ps_aop_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                                     <AIC_IRQ 134 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               pmgr_mini: power-management@210200000 {
+                       compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0x10200000 0 0x84000>;
+               };
+
                wdt: watchdog@2102b0000 {
                        compatible = "apple,t8010-wdt", "apple,wdt";
                        reg = <0x2 0x102b0000 0x0 0x4000>;
                             <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
        };
 };
+
+#include "t8010-pmgr.dtsi"
index 44a0d0e..2010b56 100644 (file)
@@ -22,6 +22,7 @@
                framebuffer0: framebuffer@0 {
                        compatible = "apple,simple-framebuffer", "simple-framebuffer";
                        reg = <0 0 0 0>; /* To be filled by loader */
+                       power-domains = <&ps_disp0_fe &ps_disp0_be &ps_dp>;
                        /* Format properties will be added by loader */
                        status = "disabled";
                };
diff --git a/src/arm64/apple/t8011-pmgr.dtsi b/src/arm64/apple/t8011-pmgr.dtsi
new file mode 100644 (file)
index 0000000..c44e3f9
--- /dev/null
@@ -0,0 +1,806 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * PMGR Power domains for the Apple T8011 "A10X" SoC
+ *
+ * Copyright (c) 2024 Nick Chan <towinchenmi@gmail.com>
+ */
+
+&pmgr {
+       ps_cpu0: power-controller@80000 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu0";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu1: power-controller@80008 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu1";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu2: power-controller@80010 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu2";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpm: power-controller@80040 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80040 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpm";
+               apple,always-on; /* Core device */
+       };
+
+       ps_sio_busif: power-controller@80158 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80158 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_busif";
+       };
+
+       ps_sio_p: power-controller@80160 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80160 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_p";
+               power-domains = <&ps_sio_busif>;
+       };
+
+       ps_sbr: power-controller@80100 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80100 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sbr";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_aic: power-controller@80108 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80108 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aic";
+               apple,always-on; /* Core device */
+       };
+
+       ps_dwi: power-controller@80110 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80110 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dwi";
+       };
+
+       ps_gpio: power-controller@80118 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80118 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gpio";
+       };
+
+       ps_pms: power-controller@80120 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80120 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms";
+               apple,always-on; /* Core device */
+       };
+
+       ps_pcie_ref: power-controller@80148 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80148 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_ref";
+       };
+
+       ps_mca0: power-controller@80170 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80170 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca1: power-controller@80178 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80178 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca2: power-controller@80180 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80180 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca3: power-controller@80188 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80188 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca4: power-controller@80190 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80190 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_pwm0: power-controller@80198 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80198 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pwm0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c0: power-controller@801a0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c1: power-controller@801a8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c2: power-controller@801b0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c3: power-controller@801b8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi0: power-controller@801c0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi1: power-controller@801c8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi2: power-controller@801d0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi3: power-controller@801d8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart0: power-controller@801e0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart1: power-controller@801e8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart2: power-controller@801f0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart3: power-controller@801f8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_sio: power-controller@80168 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80168 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio";
+               power-domains = <&ps_sio_p>;
+               apple,always-on; /* Core device */
+       };
+
+       ps_hsic0_phy: power-controller@80128 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80128 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsic0_phy";
+               power-domains = <&ps_usb3host>;
+       };
+
+       ps_isp_sens0: power-controller@80130 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80130 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens0";
+       };
+
+       ps_isp_sens1: power-controller@80138 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80138 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens1";
+       };
+
+       ps_isp_sens2: power-controller@80140 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80140 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens2";
+       };
+
+       ps_usb: power-controller@80288 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80288 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb";
+       };
+
+       ps_usbctrl: power-controller@80290 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80290 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbctrl";
+               power-domains = <&ps_usb>;
+       };
+
+       ps_usb2host: power-controller@80298 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80298 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2dev: power-controller@802a0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2dev";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb3host: power-controller@802a8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb3host";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb3dev: power-controller@802b0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb3dev";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_media: power-controller@802e8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "media";
+       };
+
+       ps_isp_sys: power-controller@802e0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sys";
+       };
+
+       ps_msr: power-controller@802f8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msr";
+               power-domains = <&ps_media>;
+       };
+
+       ps_jpg: power-controller@802f0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "jpg";
+               power-domains = <&ps_media>;
+       };
+
+       ps_disp0_fe: power-controller@802c8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_fe";
+       };
+
+       ps_disp0_be: power-controller@802d0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_be";
+               power-domains = <&ps_disp0_fe>;
+       };
+
+       ps_dpa: power-controller@80230 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80230 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dpa";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart4: power-controller@80200 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80200 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart5: power-controller@80208 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80208 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart5";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart6: power-controller@80210 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80210 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart6";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart7: power-controller@80218 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80218 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart7";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart8: power-controller@80220 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80220 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart8";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_hfd0: power-controller@80238 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80238 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hfd0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mcc: power-controller@80240 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80240 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcc";
+               apple,always-on; /* Memory cache controller */
+       };
+
+       ps_dcs0: power-controller@80248 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80248 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs0";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs1: power-controller@80250 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80250 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs1";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs2: power-controller@80258 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80258 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs2";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs3: power-controller@80260 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80260 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs3";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs4: power-controller@80268 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80268 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs4";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs5: power-controller@80270 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80270 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs5";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs6: power-controller@80278 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80278 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs6";
+       };
+
+       ps_dcs7: power-controller@80280 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80280 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs7";
+       };
+
+       ps_smx: power-controller@802b8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smx";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_sf: power-controller@802c0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sf";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_dp: power-controller@802d8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dp";
+               power-domains = <&ps_disp0_be>;
+       };
+
+       ps_venc_sys: power-controller@80320 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80320 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_sys";
+               power-domains = <&ps_media>;
+       };
+
+       ps_srs: power-controller@80390 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80390 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "srs";
+               power-domains = <&ps_media>;
+       };
+
+       ps_pms_sram: power-controller@80308 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80308 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_sram";
+       };
+
+       ps_pmp: power-controller@80300 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80300 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pmp";
+       };
+
+       ps_pcie: power-controller@80328 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80328 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie";
+       };
+
+       ps_pcie_aux: power-controller@80330 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80330 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_aux";
+       };
+
+       ps_vdec0: power-controller@80310 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80310 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "vdec0";
+               power-domains = <&ps_media>;
+       };
+
+       ps_gfx: power-controller@80338 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80338 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gfx";
+       };
+
+       ps_sep: power-controller@80400 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80400 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sep";
+               apple,always-on; /* Locked on */
+       };
+
+       ps_isp_rsts0: power-controller@84000 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_rsts0";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_rsts1: power-controller@84008 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_rsts1";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_vis: power-controller@84010 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_vis";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_be: power-controller@84018 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_be";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_pearl: power-controller@84020 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84020 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_pearl";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_dprx: power-controller@84028 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84028 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dprx";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_venc_pipe4: power-controller@88000 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe4";
+               power-domains = <&ps_venc_sys>;
+       };
+
+       ps_venc_pipe5: power-controller@88008 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe5";
+               power-domains = <&ps_venc_sys>;
+       };
+
+       ps_venc_me0: power-controller@88010 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me0";
+       };
+
+       ps_venc_me1: power-controller@88018 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me1";
+       };
+};
+
+&pmgr_mini {
+       ps_aop: power-controller@80000 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop";
+               power-domains = <&ps_aop_cpu &ps_aop_filter &ps_aop_busif>;
+               apple,always-on; /* Always on processor */
+       };
+
+       ps_debug: power-controller@80008 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug";
+       };
+
+       ps_aop_gpio: power-controller@80010 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_gpio";
+       };
+
+       ps_aop_cpu: power-controller@80048 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80048 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_cpu";
+       };
+
+       ps_aop_filter: power-controller@80050 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80050 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_filter";
+       };
+
+       ps_aop_busif: power-controller@80058 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80058 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_busif";
+       };
+};
index f4e7074..5eaa0a7 100644 (file)
                };
        };
 };
+
+&ps_dcs6 {
+       apple,always-on; /* LPDDR4 interface */
+};
+
+&ps_dcs7 {
+       apple,always-on; /* LPDDR4 interface */
+};
index 6c4ed9d..5b280c8 100644 (file)
@@ -32,6 +32,8 @@
                        compatible = "apple,hurricane-zephyr";
                        reg = <0x0 0x0>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       operating-points-v2 = <&fusion_opp>;
+                       performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
@@ -40,6 +42,8 @@
                        compatible = "apple,hurricane-zephyr";
                        reg = <0x0 0x1>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       operating-points-v2 = <&fusion_opp>;
+                       performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
                        compatible = "apple,hurricane-zephyr";
                        reg = <0x0 0x2>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       operating-points-v2 = <&fusion_opp>;
+                       performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
        };
 
+       fusion_opp: opp-table {
+               compatible = "operating-points-v2";
+
+               /*
+                * Apple Fusion Architecture: Hardwired big.LITTLE switcher
+                * that use p-state transitions to switch between cores.
+                *
+                * The E-core frequencies are adjusted so performance scales
+                * linearly with reported clock speed.
+                */
+
+               opp01 {
+                       opp-hz = /bits/ 64 <172000000>; /* 300 MHz, E-core */
+                       opp-level = <1>;
+                       clock-latency-ns = <12000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <230000000>; /* 396 MHz, E-core */
+                       opp-level = <2>;
+                       clock-latency-ns = <135000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <448000000>; /* 768 MHz, E-core */
+                       opp-level = <3>;
+                       clock-latency-ns = <105000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <662000000>; /* 1152 MHz, E-core */
+                       opp-level = <4>;
+                       clock-latency-ns = <115000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <804000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <122000>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <1140000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <120000>;
+               };
+               opp07 {
+                       opp-hz = /bits/ 64 <1548000000>;
+                       opp-level = <7>;
+                       clock-latency-ns = <125000>;
+               };
+               opp08 {
+                       opp-hz = /bits/ 64 <1956000000>;
+                       opp-level = <8>;
+                       clock-latency-ns = <135000>;
+               };
+               opp09 {
+                       opp-hz = /bits/ 64 <2316000000>;
+                       opp-level = <9>;
+                       clock-latency-ns = <140000>;
+               };
+#if 0
+               /* Not available until CPU deep sleep is implemented */
+               opp10 {
+                       opp-hz = /bits/ 64 <2400000000>;
+                       opp-level = <10>;
+                       clock-latency-ns = <140000>;
+                       turbo-mode;
+               };
+#endif
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                nonposted-mmio;
                ranges;
 
+               cpufreq: performance-controller@202f20000 {
+                       compatible = "apple,t8010-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
+                       reg = <0x2 0x02f20000 0 0x1000>;
+                       #performance-domain-cells = <0>;
+               };
+
                serial0: serial@20a0c0000 {
                        compatible = "apple,s5l-uart";
                        reg = <0x2 0x0a0c0000 0x0 0x4000>;
                        /* Use the bootloader-enabled clocks for now. */
                        clocks = <&clkref>, <&clkref>;
                        clock-names = "uart", "clk_uart_baud0";
+                       power-domains = <&ps_uart0>;
                        status = "disabled";
                };
 
+               pmgr: power-management@20e000000 {
+                       compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0xe000000 0 0x8c000>;
+               };
+
                aic: interrupt-controller@20e100000 {
                        compatible = "apple,t8010-aic", "apple,aic";
                        reg = <0x2 0x0e100000 0x0 0x100000>;
                        #interrupt-cells = <3>;
                        interrupt-controller;
+                       power-domains = <&ps_aic>;
                };
 
                pinctrl_ap: pinctrl@20f100000 {
                        compatible = "apple,t8010-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x0f100000 0x0 0x100000>;
+                       power-domains = <&ps_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                pinctrl_aop: pinctrl@2100f0000 {
                        compatible = "apple,t8010-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x100f0000 0x0 0x100000>;
+                       power-domains = <&ps_aop_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                                     <AIC_IRQ 131 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               pmgr_mini: power-management@210200000 {
+                       compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0x10200000 0 0x84000>;
+               };
+
                wdt: watchdog@2102b0000 {
                        compatible = "apple,t8010-wdt", "apple,wdt";
                        reg = <0x2 0x102b0000 0x0 0x4000>;
                             <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
        };
 };
+
+#include "t8011-pmgr.dtsi"
diff --git a/src/arm64/apple/t8012-j132.dts b/src/arm64/apple/t8012-j132.dts
new file mode 100644 (file)
index 0000000..778a69b
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacBookPro15,2 (j132), J132, iBridge2,4
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+
+/ {
+       model = "Apple T2 MacBookPro15,2 (j132)";
+       compatible = "apple,j132", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j137.dts b/src/arm64/apple/t8012-j137.dts
new file mode 100644 (file)
index 0000000..dbde1ad
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 iMacPro1,1 (j137), J137, iBridge2,1
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+
+/ {
+       model = "Apple T2 iMacPro1,1 (j137)";
+       compatible = "apple,j137", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j140a.dts b/src/arm64/apple/t8012-j140a.dts
new file mode 100644 (file)
index 0000000..5df1ff7
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacBookAir8,2 (j140a), J140a, iBridge2,12
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+
+/ {
+       model = "Apple T2 MacBookAir8,2 (j140a)";
+       compatible = "apple,j140a", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j140k.dts b/src/arm64/apple/t8012-j140k.dts
new file mode 100644 (file)
index 0000000..a0ef158
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacBookAir8,1 (j140k), J140k, iBridge2,8
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+
+/ {
+       model = "Apple T2 MacBookAir8,1 (j140k)";
+       compatible = "apple,j140k", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j152f.dts b/src/arm64/apple/t8012-j152f.dts
new file mode 100644 (file)
index 0000000..261416e
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacBookPro16,1 (j152f), J152f, iBridge2,14
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+#include "t8012-touchbar.dtsi"
+
+/ {
+       model = "Apple T2 MacBookPro16,1 (j152f)";
+       compatible = "apple,j152f", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j160.dts b/src/arm64/apple/t8012-j160.dts
new file mode 100644 (file)
index 0000000..fbcc060
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacPro7,1 (j160), J160, iBridge2,6
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+
+/ {
+       model = "Apple T2 MacPro7,1 (j160)";
+       compatible = "apple,j160", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j174.dts b/src/arm64/apple/t8012-j174.dts
new file mode 100644 (file)
index 0000000..d11c70f
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 Macmini8,1 (j174), J174, iBridge2,5
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+
+/ {
+       model = "Apple T2 Macmini8,1 (j174)";
+       compatible = "apple,j174", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j185.dts b/src/arm64/apple/t8012-j185.dts
new file mode 100644 (file)
index 0000000..33492f5
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 iMac20,1 (j185), J185, iBridge2,19
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+
+/ {
+       model = "Apple T2 iMac20,1 (j185)";
+       compatible = "apple,j185", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j185f.dts b/src/arm64/apple/t8012-j185f.dts
new file mode 100644 (file)
index 0000000..3a4abdd
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 iMac20,2 (j185f), J185f, iBridge2,20
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+
+/ {
+       model = "Apple T2 iMac20,2 (j185f)";
+       compatible = "apple,j185f", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j213.dts b/src/arm64/apple/t8012-j213.dts
new file mode 100644 (file)
index 0000000..8270812
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacBookPro15,4 (j213), J213, iBridge2,10
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+#include "t8012-touchbar.dtsi"
+
+/ {
+       model = "Apple T2 MacBookPro15,4 (j213)";
+       compatible = "apple,j213", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j214k.dts b/src/arm64/apple/t8012-j214k.dts
new file mode 100644 (file)
index 0000000..5b8e425
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacBookPro16,2 (j214k), J214k, iBridge2,16
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+#include "t8012-touchbar.dtsi"
+
+/ {
+       model = "Apple T2 MacBookPro16,2 (j214k)";
+       compatible = "apple,j214k", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j215.dts b/src/arm64/apple/t8012-j215.dts
new file mode 100644 (file)
index 0000000..ad574fb
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacBookPro16,4 (j215), J215, iBridge2,22
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+#include "t8012-touchbar.dtsi"
+
+/ {
+       model = "Apple T2 MacBookPro16,4 (j215)";
+       compatible = "apple,j215", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j223.dts b/src/arm64/apple/t8012-j223.dts
new file mode 100644 (file)
index 0000000..de75d77
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacBookPro16,3 (j223), J223, iBridge2,21
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+#include "t8012-touchbar.dtsi"
+
+/ {
+       model = "Apple T2 MacBookPro16,3 (j223)";
+       compatible = "apple,j223", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j230k.dts b/src/arm64/apple/t8012-j230k.dts
new file mode 100644 (file)
index 0000000..4b19bc7
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacBookAir9,1 (j230k), J230k, iBridge2,15
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+
+/ {
+       model = "Apple T2 MacBookAir9,1 (j230k)";
+       compatible = "apple,j230k", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j680.dts b/src/arm64/apple/t8012-j680.dts
new file mode 100644 (file)
index 0000000..aa5a72e
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacBookPro15,1 (j680), J680, iBridge2,3
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+#include "t8012-touchbar.dtsi"
+
+/ {
+       model = "Apple T2 MacBookPro15,1 (j680)";
+       compatible = "apple,j680", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-j780.dts b/src/arm64/apple/t8012-j780.dts
new file mode 100644 (file)
index 0000000..9cee891
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T2 MacBookPro15,3 (j780), J780, iBridge2,7
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "t8012-jxxx.dtsi"
+#include "t8012-touchbar.dtsi"
+
+/ {
+       model = "Apple T2 MacBookPro15,3 (j780)";
+       compatible = "apple,j780", "apple,t8012", "apple,arm-platform";
+};
diff --git a/src/arm64/apple/t8012-jxxx.dtsi b/src/arm64/apple/t8012-jxxx.dtsi
new file mode 100644 (file)
index 0000000..36e8263
--- /dev/null
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Common Device Tree for all T2 devices
+ *
+ * target-type: J132, J137, J140a, J140k, J152f, J160, J174, J185, J185f
+ * J213, J214k, J215, J223, J230k, J680, J780
+ *
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+#include "t8012.dtsi"
+
+/ {
+       chassis-type = "embedded";
+
+       aliases {
+               serial0 = &serial0;
+       };
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               stdout-path = "serial0";
+       };
+
+       memory@800000000 {
+               device_type = "memory";
+               reg = <0x8 0 0 0>; /* To be filled by loader */
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /* To be filled by loader */
+       };
+};
+
+&serial0 {
+       status = "okay";
+};
diff --git a/src/arm64/apple/t8012-pmgr.dtsi b/src/arm64/apple/t8012-pmgr.dtsi
new file mode 100644 (file)
index 0000000..35a462e
--- /dev/null
@@ -0,0 +1,837 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * PMGR Power domains for the Apple T8012 "T2" SoC
+ *
+ * Copyright (c) 2024 Nick Chan <towinchenmi@gmail.com>
+ */
+
+&pmgr {
+       ps_cpu0: power-controller@80000 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu0";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu1: power-controller@80008 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu1";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpm: power-controller@80040 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80040 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpm";
+               apple,always-on; /* Core device */
+       };
+
+       ps_sio_busif: power-controller@80158 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80158 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_busif";
+       };
+
+       ps_sio_p: power-controller@80160 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80160 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_p";
+               power-domains = <&ps_sio_busif>;
+       };
+
+       ps_iomux: power-controller@80150 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80150 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "iomux";
+       };
+
+       ps_sbr: power-controller@80100 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80100 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sbr";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_aic: power-controller@80108 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80108 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aic";
+               apple,always-on; /* Core device */
+       };
+
+       ps_gpio: power-controller@80110 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80110 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gpio";
+       };
+
+       ps_pcie_down_ref: power-controller@80138 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80138 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_down_ref";
+       };
+
+       ps_pcie_stg0_ref: power-controller@80140 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80140 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_stg0_ref";
+       };
+
+       ps_pcie_stg1_ref: power-controller@80148 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80148 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_stg1_ref";
+       };
+
+       ps_mca0: power-controller@80170 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80170 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca1: power-controller@80178 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80178 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca2: power-controller@80180 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80180 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca3: power-controller@80188 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80188 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca4: power-controller@80190 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80190 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca5: power-controller@80198 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80198 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca5";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c0: power-controller@801a8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c1: power-controller@801b0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c2: power-controller@801b8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c3: power-controller@801c0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi0: power-controller@801e0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi1: power-controller@801e8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi2: power-controller@801f0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi3: power-controller@801f8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_pwm0: power-controller@801a0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pwm0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_sio: power-controller@80168 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80168 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio";
+               power-domains = <&ps_sio_p>;
+               apple,always-on; /* Core device */
+       };
+
+       ps_isp_sens0: power-controller@80120 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80120 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens0";
+       };
+
+       ps_isp_sens1: power-controller@80128 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80128 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens1";
+       };
+
+       ps_isp_sens2: power-controller@80130 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80130 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sens2";
+       };
+
+       ps_pms: power-controller@80118 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80118 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms";
+               apple,always-on; /* Core device */
+       };
+
+       ps_i2c4: power-controller@801c8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c5: power-controller@801d0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c5";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c6: power-controller@801d8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c6";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_usb: power-controller@80268 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80268 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb";
+       };
+
+       ps_usbctrl: power-controller@80270 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80270 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbctrl";
+               power-domains = <&ps_usb>;
+       };
+
+       ps_usb2host0: power-controller@80278 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80278 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_usb2host1: power-controller@80288 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80288 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host1";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_rtmux: power-controller@802a8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "rtmux";
+       };
+
+       ps_media: power-controller@802d8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "media";
+       };
+
+       ps_isp_sys: power-controller@802d0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sys";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_msr: power-controller@802e8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msr";
+               power-domains = <&ps_media>;
+       };
+
+       ps_jpg: power-controller@802e0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "jpg";
+               power-domains = <&ps_media>;
+       };
+
+       ps_disp0_fe: power-controller@802b0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_fe";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_disp0_be: power-controller@802b8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_be";
+               power-domains = <&ps_disp0_fe>;
+       };
+
+       ps_uart0: power-controller@80200 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80200 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart1: power-controller@80208 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80208 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart2: power-controller@80210 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80210 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart3: power-controller@80218 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80218 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart4: power-controller@80220 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80220 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_dpa: power-controller@80228 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80228 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dpa";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_hfd0: power-controller@80230 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80230 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hfd0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mcc: power-controller@80240 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80240 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcc";
+               apple,always-on; /* Memory cache controller */
+       };
+
+       ps_dcs0: power-controller@80248 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80248 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs0";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs1: power-controller@80250 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80250 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs1";
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs2: power-controller@80258 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80258 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs2";
+               /* Not used on some devicecs, to be disabled by loader */
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_dcs3: power-controller@80260 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80260 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs3";
+               /* Not used on some devicecs, to be disabled by loader */
+               apple,always-on; /* LPDDR4 interface */
+       };
+
+       ps_usb2host0_ohci: power-controller@80280 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80280 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0_ohci";
+               power-domains = <&ps_usb2host0>;
+       };
+
+       ps_usbotg: power-controller@80290 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80290 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbotg";
+               power-domains = <&ps_usbctrl>;
+       };
+
+       ps_smx: power-controller@80298 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80298 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smx";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_sf: power-controller@802a0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sf";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_mipi_dsi: power-controller@802c8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mipi_dsi";
+               power-domains = <&ps_disp0_be>;
+       };
+
+       ps_pmp: power-controller@802f0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pmp";
+       };
+
+       ps_pms_sram: power-controller@802f8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_sram";
+       };
+
+       ps_pcie_up_af: power-controller@80320 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80320 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_up_af";
+               power-domains = <&ps_iomux>;
+       };
+
+       ps_pcie_up: power-controller@80328 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80328 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_up";
+               power-domains = <&ps_pcie_up_af>;
+       };
+
+       ps_venc_sys: power-controller@80300 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80300 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_sys";
+               power-domains = <&ps_media>;
+       };
+
+       ps_ans2: power-controller@80308 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80308 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ans2";
+               power-domains = <&ps_iomux>;
+       };
+
+       ps_pcie_down: power-controller@80310 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80310 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_down";
+               power-domains = <&ps_iomux>;
+       };
+
+       ps_pcie_down_aux: power-controller@80318 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80318 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_down_aux";
+       };
+
+       ps_pcie_up_aux: power-controller@80330 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80330 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_up_aux";
+               power-domains = <&ps_pcie_up>;
+       };
+
+       ps_pcie_stg0: power-controller@80338 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80338 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_stg0";
+               power-domains = <&ps_ans2>;
+       };
+
+       ps_pcie_stg0_aux: power-controller@80340 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80340 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_stg0_aux";
+       };
+
+       ps_pcie_stg1: power-controller@80348 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80348 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_stg1";
+               power-domains = <&ps_ans2>;
+       };
+
+       ps_pcie_stg1_aux: power-controller@80350 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80350 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_stg1_aux";
+       };
+
+       ps_sep: power-controller@80400 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80400 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sep";
+               apple,always-on; /* Locked on */
+       };
+
+       ps_isp_rsts0: power-controller@84000 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_rsts0";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_rsts1: power-controller@84008 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_rsts1";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_vis: power-controller@84010 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_vis";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_be: power-controller@84018 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_be";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_pearl: power-controller@84020 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84020 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_pearl";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_venc_pipe4: power-controller@88000 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe4";
+       };
+
+       ps_venc_pipe5: power-controller@88008 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe5";
+       };
+
+       ps_venc_me0: power-controller@88010 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me0";
+       };
+
+       ps_venc_me1: power-controller@88018 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me1";
+       };
+};
+
+&pmgr_mini {
+       ps_spmi: power-controller@80058 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80058 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spmi";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_nub_aon: power-controller@80060 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80060 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "nub_aon";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_smc_fabric: power-controller@80030 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80030 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smc_fabric";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_smc_aon: power-controller@80088 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80088 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smc_aon";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_debug: power-controller@80050 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80050 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug";
+       };
+
+       ps_nub_sram: power-controller@801a0 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "nub_sram";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_nub_fabric: power-controller@80198 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80198 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "nub_fabric";
+               apple,always-on; /* Core AON device */
+       };
+
+       ps_smc_cpu: power-controller@801a8 {
+               compatible = "apple,t8010-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smc_cpu";
+               power-domains = <&ps_smc_fabric &ps_smc_aon>;
+       };
+};
diff --git a/src/arm64/apple/t8012-touchbar.dtsi b/src/arm64/apple/t8012-touchbar.dtsi
new file mode 100644 (file)
index 0000000..fc4a80d
--- /dev/null
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Common Device Tree for T2 devices with a Touch Bar
+ *
+ * target-type: J152f, J213, J214k, J215, J223, J680, J780
+ *
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+/ {
+       chosen {
+               framebuffer0: framebuffer@0 {
+                       compatible = "apple,simple-framebuffer", "simple-framebuffer";
+                       reg = <0 0 0 0>; /* To be filled by loader */
+                       power-domains = <&ps_disp0_fe &ps_disp0_be &ps_mipi_dsi>;
+                       /* Format properties will be added by loader */
+                       status = "disabled";
+               };
+       };
+};
diff --git a/src/arm64/apple/t8012.dtsi b/src/arm64/apple/t8012.dtsi
new file mode 100644 (file)
index 0000000..42df2f5
--- /dev/null
@@ -0,0 +1,281 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Apple T8012 "T2" SoC
+ *
+ * Other names: H9M, "Gibraltar"
+ *
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/apple-aic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/apple.h>
+
+/ {
+       interrupt-parent = <&aic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       clkref: clock-ref {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+               clock-output-names = "clkref";
+       };
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@10000 {
+                       compatible = "apple,hurricane-zephyr";
+                       reg = <0x0 0x10000>;
+                       cpu-release-addr = <0 0>; /* To be filled by loader */
+                       operating-points-v2 = <&fusion_opp>;
+                       performance-domains = <&cpufreq>;
+                       enable-method = "spin-table";
+                       device_type = "cpu";
+               };
+
+               cpu1: cpu@10001 {
+                       compatible = "apple,hurricane-zephyr";
+                       reg = <0x0 0x10001>;
+                       cpu-release-addr = <0 0>; /* To be filled by loader */
+                       operating-points-v2 = <&fusion_opp>;
+                       performance-domains = <&cpufreq>;
+                       enable-method = "spin-table";
+                       device_type = "cpu";
+               };
+       };
+
+       fusion_opp: opp-table {
+               compatible = "operating-points-v2";
+
+               /*
+                * Apple Fusion Architecture: Hardware big.LITTLE switcher
+                * that use p-state transitions to switch between cores.
+                * Only one type of core can be active at a given time.
+                *
+                * The E-core frequencies are adjusted so performance scales
+                * linearly with reported clock speed.
+                */
+
+               opp01 {
+                       opp-hz = /bits/ 64 <172000000>; /* 300 MHz, E-core */
+                       opp-level = <1>;
+                       clock-latency-ns = <11000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <230000000>; /* 396 MHz, E-core */
+                       opp-level = <2>;
+                       clock-latency-ns = <140000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <425000000>; /* 732 MHz, E-core */
+                       opp-level = <3>;
+                       clock-latency-ns = <110000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <637000000>; /* 1092 MHz, E-core */
+                       opp-level = <4>;
+                       clock-latency-ns = <130000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <756000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <130000>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <1056000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <130000>;
+               };
+               opp07 {
+                       opp-hz = /bits/ 64 <1356000000>;
+                       opp-level = <7>;
+                       clock-latency-ns = <130000>;
+               };
+               opp08 {
+                       opp-hz = /bits/ 64 <1644000000>;
+                       opp-level = <8>;
+                       clock-latency-ns = <135000>;
+               };
+               opp09 {
+                       opp-hz = /bits/ 64 <1944000000>;
+                       opp-level = <9>;
+                       clock-latency-ns = <140000>;
+               };
+               opp10 {
+                       opp-hz = /bits/ 64 <2244000000>;
+                       opp-level = <10>;
+                       clock-latency-ns = <150000>;
+               };
+#if 0
+               /* Not available until CPU deep sleep is implemented */
+               opp11 {
+                       opp-hz = /bits/ 64 <2340000000>;
+                       opp-level = <11>;
+                       clock-latency-ns = <150000>;
+                       turbo-mode;
+               };
+#endif
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               nonposted-mmio;
+               ranges;
+
+               cpufreq: performance-controller@202f20000 {
+                       compatible = "apple,t8010-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
+                       reg = <0x2 0x02f20000 0 0x1000>;
+                       #performance-domain-cells = <0>;
+               };
+
+               serial0: serial@20a600000 {
+                       compatible = "apple,s5l-uart";
+                       reg = <0x2 0x0a600000 0x0 0x4000>;
+                       reg-io-width = <4>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 271 IRQ_TYPE_LEVEL_HIGH>;
+                       /* Use the bootloader-enabled clocks for now. */
+                       clocks = <&clkref>, <&clkref>;
+                       clock-names = "uart", "clk_uart_baud0";
+                       power-domains = <&ps_uart0>;
+                       status = "disabled";
+               };
+
+               pmgr: power-management@20e000000 {
+                       compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0xe000000 0 0x8c000>;
+               };
+
+               aic: interrupt-controller@20e100000 {
+                       compatible = "apple,t8010-aic", "apple,aic";
+                       reg = <0x2 0x0e100000 0x0 0x100000>;
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+                       power-domains = <&ps_aic>;
+               };
+
+               pinctrl_ap: pinctrl@20f100000 {
+                       compatible = "apple,t8010-pinctrl", "apple,pinctrl";
+                       reg = <0x2 0x0f100000 0x0 0x100000>;
+                       power-domains = <&ps_gpio>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_ap 0 0 221>;
+                       apple,npins = <221>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 45 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 46 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 47 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 48 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 49 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 50 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 51 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_aop: pinctrl@2100f0000 {
+                       compatible = "apple,t8010-pinctrl", "apple,pinctrl";
+                       reg = <0x2 0x0100f0000 0x0 0x10000>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_aop 0 0 41>;
+                       apple,npins = <41>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 131 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 132 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 133 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 134 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 135 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 136 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 137 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_nub: pinctrl@2111f0000 {
+                       compatible = "apple,t8010-pinctrl", "apple,pinctrl";
+                       reg = <0x2 0x111f0000 0x0 0x1000>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_nub 0 0 19>;
+                       apple,npins = <19>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 164 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 165 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 166 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pmgr_mini: power-management@211200000 {
+                       compatible = "apple,t8010-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0x11200000 0 0x84000>;
+               };
+
+               wdt: watchdog@2112b0000 {
+                       compatible = "apple,t8010-wdt", "apple,wdt";
+                       reg = <0x2 0x112b0000 0x0 0x4000>;
+                       clocks = <&clkref>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 168 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_smc: pinctrl@212024000 {
+                       compatible = "apple,t8010-pinctrl", "apple,pinctrl";
+                       reg = <0x2 0x12024000 0x0 0x1000>;
+                       power-domains = <&ps_smc_cpu>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_smc 0 0 81>;
+                       apple,npins = <81>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 195 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 196 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 197 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 198 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 199 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 200 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 201 IRQ_TYPE_LEVEL_HIGH>;
+                       /*
+                        * SMC is not yet supported and accessing this pinctrl while SMC is
+                        * suspended results in a hang.
+                        */
+                       status = "disabled";
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupt-parent = <&aic>;
+               interrupt-names = "phys", "virt";
+               /* Note that T2 doesn't actually have a hypervisor (EL2 is not implemented). */
+               interrupts = <AIC_FIQ AIC_TMR_GUEST_PHYS IRQ_TYPE_LEVEL_HIGH>,
+                            <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
+       };
+};
+
+#include "t8012-pmgr.dtsi"
index b6505b5..0300ee1 100644 (file)
@@ -11,3 +11,7 @@
 / {
        chassis-type = "handset";
 };
+
+&dwi_bl {
+       status = "okay";
+};
index 69258a3..498f58f 100644 (file)
@@ -24,6 +24,7 @@
                framebuffer0: framebuffer@0 {
                        compatible = "apple,simple-framebuffer", "simple-framebuffer";
                        reg = <0 0 0 0>; /* To be filled by loader */
+                       power-domains = <&ps_disp0_be &ps_mipi_dsi &ps_disp0_hilo &ps_disp0_ppp>;
                        /* Format properties will be added by loader */
                        status = "disabled";
                };
diff --git a/src/arm64/apple/t8015-pmgr.dtsi b/src/arm64/apple/t8015-pmgr.dtsi
new file mode 100644 (file)
index 0000000..e238c2d
--- /dev/null
@@ -0,0 +1,931 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * PMGR Power domains for the Apple T8015 "A11" SoC
+ *
+ * Copyright (c) 2024, Nick Chan <towinchenmi@gmail.com>
+ */
+
+&pmgr {
+       ps_cpu0: power-controller@80000 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu0";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu1: power-controller@80008 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu1";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu2: power-controller@80010 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu2";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu3: power-controller@80018 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu3";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu4: power-controller@80020 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80020 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu4";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpu5: power-controller@80028 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80028 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpu5";
+               apple,always-on; /* Core device */
+       };
+
+       ps_cpm: power-controller@80040 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80040 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "cpm";
+               apple,always-on; /* Core device */
+       };
+
+       ps_sio_busif: power-controller@80158 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80158 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_busif";
+       };
+
+       ps_sio_p: power-controller@80160 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80160 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio_p";
+               power-domains = <&ps_sio_busif>;
+       };
+
+       ps_sbr: power-controller@80100 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80100 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sbr";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_aic: power-controller@80108 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80108 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aic";
+               apple,always-on; /* Core device */
+       };
+
+       ps_dwi: power-controller@80110 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80110 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dwi";
+       };
+
+       ps_gpio: power-controller@80118 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80118 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gpio";
+       };
+
+       ps_pms: power-controller@80120 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80120 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms";
+               apple,always-on; /* Core device */
+       };
+
+       ps_pcie_ref: power-controller@80148 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80148 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_ref";
+       };
+
+       ps_mca0: power-controller@80170 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80170 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca1: power-controller@80178 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80178 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca2: power-controller@80180 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80180 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca3: power-controller@80188 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80188 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mca4: power-controller@80190 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80190 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_pwm0: power-controller@801a0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pwm0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c0: power-controller@801a8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c1: power-controller@801b0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c2: power-controller@801b8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_i2c3: power-controller@801c0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "i2c3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi0: power-controller@801c8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi1: power-controller@801d0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi2: power-controller@801d8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_spi3: power-controller@801e0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart0: power-controller@801e8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801e8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart1: power-controller@801f0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart1";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart2: power-controller@801f8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x801f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart2";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_sio: power-controller@80168 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80168 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sio";
+               power-domains = <&ps_sio_p>;
+               apple,always-on; /* Core device */
+       };
+
+       ps_hsicphy: power-controller@80128 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80128 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hsicphy";
+               power-domains = <&ps_usb2host1>;
+       };
+
+       ps_ispsens0: power-controller@80130 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80130 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens0";
+       };
+
+       ps_ispsens1: power-controller@80138 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80138 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens1";
+       };
+
+       ps_ispsens2: power-controller@80140 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80140 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ispsens2";
+       };
+
+       ps_mca5: power-controller@80198 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80198 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mca5";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_usb: power-controller@80270 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80270 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb";
+       };
+
+       ps_usbctlreg: power-controller@80278 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80278 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usbctlreg";
+               power-domains = <&ps_usb>;
+       };
+
+       ps_usb2host0: power-controller@80280 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80280 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0";
+               power-domains = <&ps_usbctlreg>;
+       };
+
+       ps_usb2host1: power-controller@80290 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80290 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host1";
+               power-domains = <&ps_usbctlreg>;
+       };
+
+       ps_rtmux: power-controller@802b0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802b0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "rtmux";
+       };
+
+       ps_media: power-controller@802f0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "media";
+       };
+
+       ps_jpg: power-controller@802f8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802f8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "jpg";
+               power-domains = <&ps_media>;
+       };
+
+       ps_disp0_fe: power-controller@802b8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802b8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_fe";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_disp0_be: power-controller@802c0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802c0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_be";
+               power-domains = <&ps_disp0_fe>;
+       };
+
+       ps_disp0_gp: power-controller@802c8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802c8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_gp";
+               power-domains = <&ps_disp0_be>;
+               status = "disabled";
+       };
+
+       ps_uart3: power-controller@80200 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80200 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart3";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart4: power-controller@80208 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80208 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart4";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart5: power-controller@80210 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80210 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart5";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart6: power-controller@80218 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80218 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart6";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart7: power-controller@80220 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80220 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart7";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_uart8: power-controller@80228 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80228 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "uart8";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_hfd0: power-controller@80238 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80238 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "hfd0";
+               power-domains = <&ps_sio_p>;
+       };
+
+       ps_mcc: power-controller@80248 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80248 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mcc";
+               apple,always-on; /* Memory cache controller */
+       };
+
+       ps_dcs0: power-controller@80250 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80250 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs0";
+               apple,always-on; /* LPDDR4X interface */
+       };
+
+       ps_dcs1: power-controller@80258 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80258 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs1";
+               apple,always-on; /* LPDDR4X interface */
+       };
+
+       ps_dcs2: power-controller@80260 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80260 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs2";
+               apple,always-on; /* LPDDR4X interface */
+       };
+
+       ps_dcs3: power-controller@80268 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80268 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dcs3";
+               apple,always-on; /* LPDDR4X interface */
+       };
+
+       ps_usb2host0_ohci: power-controller@80288 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80288 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2host0_ohci";
+               power-domains = <&ps_usb2host0>;
+       };
+
+       ps_usb2dev: power-controller@80298 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80298 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "usb2dev";
+               power-domains = <&ps_usbctlreg>;
+       };
+
+       ps_smx: power-controller@802a0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802a0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smx";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_sf: power-controller@802a8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sf";
+               apple,always-on; /* Apple fabric, critical block */
+       };
+
+       ps_mipi_dsi: power-controller@802d8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "mipi_dsi";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_dp: power-controller@802e0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802e0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dp";
+               power-domains = <&ps_disp0_be>;
+       };
+
+       ps_dpa: power-controller@80230 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80230 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dpa";
+       };
+
+       ps_disp0_be_2x: power-controller@802d0 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x802d0 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_be_2x";
+               power-domains = <&ps_disp0_be>;
+       };
+
+       ps_isp_sys: power-controller@80350 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80350 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_sys";
+               power-domains = <&ps_rtmux>;
+       };
+
+       ps_msr: power-controller@80300 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80300 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "msr";
+               power-domains = <&ps_media>;
+       };
+
+       ps_venc_sys: power-controller@80398 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80398 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_sys";
+               power-domains = <&ps_media>;
+       };
+
+       ps_pmp: power-controller@80308 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80308 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pmp";
+       };
+
+       ps_pms_sram: power-controller@80310 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80310 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pms_sram";
+       };
+
+       ps_pcie: power-controller@80318 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80318 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie";
+       };
+
+       ps_pcie_aux: power-controller@80320 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80320 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_aux";
+       };
+
+       ps_vdec0: power-controller@80388 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80388 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "vdec0";
+               power-domains = <&ps_media>;
+       };
+
+       ps_gfx: power-controller@80338 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80338 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "gfx";
+       };
+
+       ps_ans2: power-controller@80328 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80328 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "ans2";
+               apple,always-on;
+       };
+
+       ps_pcie_direct: power-controller@80330 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80330 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "pcie_direct";
+               apple,always-on;
+       };
+
+       ps_avd_sys: power-controller@803a8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x803a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "avd_sys";
+               power-domains = <&ps_media>;
+       };
+
+       ps_sep: power-controller@80400 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80400 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "sep";
+               apple,always-on; /* Locked on */
+       };
+
+       ps_disp0_gp0: power-controller@80830 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80830 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_gp0";
+               power-domains = <&ps_disp0_gp>;
+               status = "disabled";
+       };
+
+       ps_disp0_gp1: power-controller@80838 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80838 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_gp1";
+               status = "disabled";
+       };
+
+       ps_disp0_ppp: power-controller@80840 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80840 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_ppp";
+       };
+
+       ps_disp0_hilo: power-controller@80848 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80848 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "disp0_hilo";
+       };
+
+       ps_isp_rsts0: power-controller@84000 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_rsts0";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_rsts1: power-controller@84008 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_rsts1";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_vis: power-controller@84010 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_vis";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_be: power-controller@84018 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_be";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_pearl: power-controller@84020 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84020 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_pearl";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_dprx: power-controller@84028 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84028 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "dprx";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_isp_cnv: power-controller@84030 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x84030 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "isp_cnv";
+               power-domains = <&ps_isp_sys>;
+       };
+
+       ps_venc_dma: power-controller@88000 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_dma";
+       };
+
+       ps_venc_pipe4: power-controller@88010 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88010 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe4";
+       };
+
+       ps_venc_pipe5: power-controller@88018 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88018 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_pipe5";
+       };
+
+       ps_venc_me0: power-controller@88020 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88020 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me0";
+       };
+
+       ps_venc_me1: power-controller@88028 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x88028 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "venc_me1";
+       };
+};
+
+&pmgr_mini {
+       ps_aop_base: power-controller@80008 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80008 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_base";
+               power-domains = <&ps_aop_cpu &ps_aop_filter>;
+               apple,always-on; /* Always on processor */
+       };
+
+       ps_debug: power-controller@80050 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80050 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "debug";
+       };
+
+       ps_aop_cpu: power-controller@80020 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80020 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_cpu";
+       };
+
+       ps_aop_filter: power-controller@80000 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80000 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "aop_filter";
+       };
+
+       ps_spmi: power-controller@80058 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80058 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spmi";
+               apple,always-on; /* System Power Management Interface */
+       };
+
+       ps_smc_i2cm1: power-controller@800a8 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x800a8 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smc_i2cm1";
+       };
+
+       ps_smc_fabric: power-controller@80030 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80030 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smc_fabric";
+       };
+
+       ps_smc_cpu: power-controller@80140 {
+               compatible = "apple,t8015-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x80140 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "smc_cpu";
+               power-domains = <&ps_smc_fabric &ps_smc_i2cm1>;
+       };
+};
index 8828d83..4d54afc 100644 (file)
@@ -58,6 +58,9 @@
                        compatible = "apple,mistral";
                        reg = <0x0 0x0>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       performance-domains = <&cpufreq_e>;
+                       operating-points-v2 = <&mistral_opp>;
+                       capacity-dmips-mhz = <633>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
@@ -66,6 +69,9 @@
                        compatible = "apple,mistral";
                        reg = <0x0 0x1>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       performance-domains = <&cpufreq_e>;
+                       operating-points-v2 = <&mistral_opp>;
+                       capacity-dmips-mhz = <633>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
@@ -74,6 +80,9 @@
                        compatible = "apple,mistral";
                        reg = <0x0 0x2>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       performance-domains = <&cpufreq_e>;
+                       operating-points-v2 = <&mistral_opp>;
+                       capacity-dmips-mhz = <633>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
@@ -82,6 +91,9 @@
                        compatible = "apple,mistral";
                        reg = <0x0 0x3>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       performance-domains = <&cpufreq_e>;
+                       operating-points-v2 = <&mistral_opp>;
+                       capacity-dmips-mhz = <633>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
                        compatible = "apple,monsoon";
                        reg = <0x0 0x10004>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       performance-domains = <&cpufreq_p>;
+                       operating-points-v2 = <&monsoon_opp>;
+                       capacity-dmips-mhz = <1024>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
                        compatible = "apple,monsoon";
                        reg = <0x0 0x10005>;
                        cpu-release-addr = <0 0>; /* To be filled by loader */
+                       performance-domains = <&cpufreq_p>;
+                       operating-points-v2 = <&monsoon_opp>;
+                       capacity-dmips-mhz = <1024>;
                        enable-method = "spin-table";
                        device_type = "cpu";
                };
        };
 
+       mistral_opp: opp-table-0 {
+               compatible = "operating-points-v2";
+
+               opp01 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-level = <1>;
+                       clock-latency-ns = <1800>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <453000000>;
+                       opp-level = <2>;
+                       clock-latency-ns = <140000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <672000000>;
+                       opp-level = <3>;
+                       clock-latency-ns = <105000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <972000000>;
+                       opp-level = <4>;
+                       clock-latency-ns = <115000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <1272000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <125000>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <1572000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <135000>;
+               };
+#if 0
+               /* Not available until CPU deep sleep is implemented */
+               opp07 {
+                       opp-hz = /bits/ 64 <1680000000>;
+                       opp-level = <7>;
+                       clock-latency-ns = <135000>;
+                       turbo-mode;
+               };
+#endif
+       };
+
+       monsoon_opp: opp-table-1 {
+               compatible = "operating-points-v2";
+
+               opp01 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-level = <1>;
+                       clock-latency-ns = <1400>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <453000000>;
+                       opp-level = <2>;
+                       clock-latency-ns = <140000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <853000000>;
+                       opp-level = <3>;
+                       clock-latency-ns = <110000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <1332000000>;
+                       opp-level = <4>;
+                       clock-latency-ns = <110000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <1812000000>;
+                       opp-level = <5>;
+                       clock-latency-ns = <125000>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <2064000000>;
+                       opp-level = <6>;
+                       clock-latency-ns = <130000>;
+               };
+               opp07 {
+                       opp-hz = /bits/ 64 <2304000000>;
+                       opp-level = <7>;
+                       clock-latency-ns = <140000>;
+               };
+#if 0
+               /* Not available until CPU deep sleep is implemented */
+               opp08 {
+                       opp-hz = /bits/ 64 <2376000000>;
+                       opp-level = <8>;
+                       clock-latency-ns = <140000>;
+                       turbo-mode;
+               };
+#endif
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                nonposted-mmio;
                ranges;
 
+               cpufreq_e: performance-controller@208e20000 {
+                       compatible = "apple,t8015-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
+                       reg = <0x2 0x08e20000 0 0x1000>;
+                       #performance-domain-cells = <0>;
+               };
+
+               cpufreq_p: performance-controller@208ea0000 {
+                       compatible = "apple,t8015-cluster-cpufreq", "apple,t8103-cluster-cpufreq", "apple,cluster-cpufreq";
+                       reg = <0x2 0x08ea0000 0 0x1000>;
+                       #performance-domain-cells = <0>;
+               };
+
                serial0: serial@22e600000 {
                        compatible = "apple,s5l-uart";
                        reg = <0x2 0x2e600000 0x0 0x4000>;
                        /* Use the bootloader-enabled clocks for now. */
                        clocks = <&clkref>, <&clkref>;
                        clock-names = "uart", "clk_uart_baud0";
+                       power-domains = <&ps_uart0>;
                        status = "disabled";
                };
 
                        reg = <0x2 0x32100000 0x0 0x8000>;
                        #interrupt-cells = <3>;
                        interrupt-controller;
+                       power-domains = <&ps_aic>;
+               };
+
+               pmgr: power-management@232000000 {
+                       compatible = "apple,t8015-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0x32000000 0 0x8c000>;
+               };
+
+               dwi_bl: backlight@232200080 {
+                       compatible = "apple,t8015-dwi-bl", "apple,dwi-bl";
+                       reg = <0x2 0x32200080 0x0 0x8>;
+                       power-domains = <&ps_dwi>;
+                       status = "disabled";
                };
 
                pinctrl_ap: pinctrl@233100000 {
                        compatible = "apple,t8015-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x33100000 0x0 0x1000>;
+                       power-domains = <&ps_gpio>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                                     <AIC_IRQ 170 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               pmgr_mini: power-management@235200000 {
+                       compatible = "apple,t8015-pmgr", "apple,pmgr", "syscon", "simple-mfd";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       reg = <0x2 0x35200000 0 0x84000>;
+               };
+
                wdt: watchdog@2352b0000 {
                        compatible = "apple,t8015-wdt", "apple,wdt";
                        reg = <0x2 0x352b0000 0x0 0x4000>;
                             <AIC_FIQ AIC_TMR_GUEST_VIRT IRQ_TYPE_LEVEL_HIGH>;
        };
 };
+
+#include "t8015-pmgr.dtsi"
index 56b0c67..e2d9439 100644 (file)
        compatible = "apple,j293", "apple,t8103", "apple,arm-platform";
        model = "Apple MacBook Pro (13-inch, M1, 2020)";
 
+       /*
+        * All of those are used by the bootloader to pass calibration
+        * blobs and other device-specific properties
+        */
+       aliases {
+               touchbar0 = &touchbar0;
+       };
+
        led-controller {
                compatible = "pwm-leds";
                led-0 {
 &fpwm1 {
        status = "okay";
 };
+
+&spi0 {
+       cs-gpios = <&pinctrl_ap 109 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       touchbar0: touchbar@0 {
+               compatible = "apple,j293-touchbar";
+               reg = <0>;
+               spi-max-frequency = <11500000>;
+               spi-cs-setup-delay-ns = <2000>;
+               spi-cs-hold-delay-ns = <2000>;
+               reset-gpios = <&pinctrl_ap 139 GPIO_ACTIVE_LOW>;
+               interrupts-extended = <&pinctrl_ap 194 IRQ_TYPE_EDGE_FALLING>;
+               firmware-name = "apple/dfrmtfw-j293.bin";
+               touchscreen-size-x = <23045>;
+               touchscreen-size-y = <640>;
+               touchscreen-inverted-y;
+       };
+};
+
+/*
+ * The driver depends on boot loader initialized state which resets when this
+ * power-domain is powered off. This happens on suspend or when the driver is
+ * missing during boot. Mark the domain as always on until the driver can
+ * handle this.
+ */
+&ps_dispdfr_be {
+       apple,always-on;
+};
+
+&display_dfr {
+       status = "okay";
+};
+
+&dfr_mipi_out {
+       dfr_mipi_out_panel: endpoint@0 {
+               reg = <0>;
+               remote-endpoint = <&dfr_panel_in>;
+       };
+};
+
+&displaydfr_mipi {
+       status = "okay";
+
+       dfr_panel: panel@0 {
+               compatible = "apple,j293-summit", "apple,summit";
+               reg = <0>;
+               max-brightness = <255>;
+
+               port {
+                       dfr_panel_in: endpoint {
+                               remote-endpoint = <&dfr_mipi_out_panel>;
+                       };
+               };
+       };
+};
+
+&displaydfr_dart {
+       status = "okay";
+};
index 5988a4e..8e82231 100644 (file)
@@ -90,3 +90,5 @@
 &nco_clkref {
        clock-frequency = <900000000>;
 };
+
+#include "spi1-nvram.dtsi"
index 9645861..c41c57d 100644 (file)
                power-domains = <&ps_sio>, <&ps_spi_p>;
        };
 
+       ps_spi4: power-controller@260 {
+               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
+               reg = <0x260 4>;
+               #power-domain-cells = <0>;
+               #reset-cells = <0>;
+               label = "spi4";
+               power-domains = <&ps_sio>, <&ps_spi_p>;
+       };
+
        ps_uart_n: power-controller@268 {
                compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
                reg = <0x268 4>;
                apple,always-on; /* Memory controller */
        };
 
-       ps_spi4: power-controller@260 {
-               compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
-               reg = <0x260 4>;
-               #power-domain-cells = <0>;
-               #reset-cells = <0>;
-               label = "spi4";
-               power-domains = <&ps_sio>, <&ps_spi_p>;
-       };
-
        ps_dcs0: power-controller@300 {
                compatible = "apple,t8103-pmgr-pwrstate", "apple,pmgr-pwrstate";
                reg = <0x300 4>;
index 9b0dad6..97b6a06 100644 (file)
                clock-output-names = "clkref";
        };
 
+       clk_120m: clock-120m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <120000000>;
+               clock-output-names = "clk_120m";
+       };
+
+       clk_200m: clock-200m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <200000000>;
+               clock-output-names = "clk_200m";
+       };
+
        /*
         * This is a fabulated representation of the input clock
         * to NCO since we don't know the true clock tree.
                        #performance-domain-cells = <0>;
                };
 
+               display_dfr: display-pipe@228200000 {
+                       compatible = "apple,t8103-display-pipe", "apple,h7-display-pipe";
+                       reg = <0x2 0x28200000 0x0 0xc000>,
+                             <0x2 0x28400000 0x0 0x4000>;
+                       reg-names = "be", "fe";
+                       power-domains = <&ps_dispdfr_fe>, <&ps_dispdfr_be>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 502 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 506 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "be", "fe";
+                       iommus = <&displaydfr_dart 0>;
+                       status = "disabled";
+
+                       port {
+                               dfr_adp_out_mipi: endpoint {
+                                       remote-endpoint = <&dfr_mipi_in_adp>;
+                               };
+                       };
+               };
+
+               displaydfr_dart: iommu@228304000 {
+                       compatible = "apple,t8103-dart";
+                       reg = <0x2 0x28304000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 504 IRQ_TYPE_LEVEL_HIGH>;
+                       #iommu-cells = <1>;
+                       power-domains = <&ps_dispdfr_fe>;
+                       status = "disabled";
+               };
+
+               displaydfr_mipi: dsi@228600000 {
+                       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 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               dfr_mipi_in: port@0 {
+                                       reg = <0>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       dfr_mipi_in_adp: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&dfr_adp_out_mipi>;
+                                       };
+                               };
+
+                               dfr_mipi_out: port@1 {
+                                       reg = <1>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                               };
+                       };
+               };
+
                sio_dart: iommu@235004000 {
                        compatible = "apple,t8103-dart";
                        reg = <0x2 0x35004000 0x0 0x4000>;
                        status = "disabled";
                };
 
+               spi0: spi@235100000 {
+                       compatible = "apple,t8103-spi", "apple,spi";
+                       reg = <0x2 0x35100000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 614 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_200m>;
+                       pinctrl-0 = <&spi0_pins>;
+                       pinctrl-names = "default";
+                       power-domains = <&ps_spi0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi1: spi@235104000 {
+                       compatible = "apple,t8103-spi", "apple,spi";
+                       reg = <0x2 0x35104000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 615 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_200m>;
+                       pinctrl-0 = <&spi1_pins>;
+                       pinctrl-names = "default";
+                       power-domains = <&ps_spi1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi3: spi@23510c000 {
+                       compatible = "apple,t8103-spi", "apple,spi";
+                       reg = <0x2 0x3510c000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 617 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_120m>;
+                       pinctrl-0 = <&spi3_pins>;
+                       pinctrl-names = "default";
+                       power-domains = <&ps_spi3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                serial0: serial@235200000 {
                        compatible = "apple,s5l-uart";
                        reg = <0x2 0x35200000 0x0 0x1000>;
                                         <APPLE_PINMUX(134, 1)>;
                        };
 
+                       spi0_pins: spi0-pins {
+                               pinmux = <APPLE_PINMUX(67, 1)>, /* CLK */
+                                       <APPLE_PINMUX(68, 1)>,  /* MOSI */
+                                       <APPLE_PINMUX(69, 1)>;  /* MISO */
+                       };
+
+                       spi1_pins: spi1-pins {
+                               pinmux = <APPLE_PINMUX(42, 1)>,
+                                       <APPLE_PINMUX(43, 1)>,
+                                       <APPLE_PINMUX(44, 1)>,
+                                       <APPLE_PINMUX(45, 1)>;
+                       };
+
+                       spi3_pins: spi3-pins {
+                               pinmux = <APPLE_PINMUX(46, 1)>,
+                                       <APPLE_PINMUX(47, 1)>,
+                                       <APPLE_PINMUX(48, 1)>,
+                                       <APPLE_PINMUX(49, 1)>;
+                       };
+
                        pcie_pins: pcie-pins {
                                pinmux = <APPLE_PINMUX(150, 1)>,
                                         <APPLE_PINMUX(151, 1)>,
index 0ad9083..be86d34 100644 (file)
        compatible = "apple,j493", "apple,t8112", "apple,arm-platform";
        model = "Apple MacBook Pro (13-inch, M2, 2022)";
 
+       /*
+        * All of those are used by the bootloader to pass calibration
+        * blobs and other device-specific properties
+        */
        aliases {
                bluetooth0 = &bluetooth0;
+               touchbar0 = &touchbar0;
                wifi0 = &wifi0;
        };
 
        };
 };
 
+/*
+ * The driver depends on boot loader initialized state which resets when this
+ * power-domain is powered off. This happens on suspend or when the driver is
+ * missing during boot. Mark the domain as always on until the driver can
+ * handle this.
+ */
+&ps_dispdfr_be {
+       apple,always-on;
+};
+
+&display_dfr {
+       status = "okay";
+};
+
+&dfr_mipi_out {
+       dfr_mipi_out_panel: endpoint@0 {
+               reg = <0>;
+               remote-endpoint = <&dfr_panel_in>;
+       };
+};
+
+&displaydfr_mipi {
+       status = "okay";
+
+       dfr_panel: panel@0 {
+               compatible = "apple,j493-summit", "apple,summit";
+               reg = <0>;
+               max-brightness = <255>;
+
+               port {
+                       dfr_panel_in: endpoint {
+                               remote-endpoint = <&dfr_mipi_out_panel>;
+                       };
+               };
+       };
+};
+
+&displaydfr_dart {
+       status = "okay";
+};
+
 /*
  * Force the bus number assignments so that we can declare some of the
  * on-board devices and properties that are populated by the bootloader
 &fpwm1 {
        status = "okay";
 };
+
+&spi3 {
+       status = "okay";
+
+       touchbar0: touchbar@0 {
+               compatible = "apple,j493-touchbar";
+               reg = <0>;
+               spi-max-frequency = <8000000>;
+               spi-cs-setup-delay-ns = <2000>;
+               spi-cs-hold-delay-ns = <2000>;
+               reset-gpios = <&pinctrl_ap 170 GPIO_ACTIVE_LOW>;
+               interrupts-extended = <&pinctrl_ap 174 IRQ_TYPE_EDGE_FALLING>;
+               firmware-name = "apple/dfrmtfw-j493.bin";
+               touchscreen-size-x = <23045>;
+               touchscreen-size-y = <640>;
+               touchscreen-inverted-y;
+       };
+};
index f5edf61..6da3549 100644 (file)
@@ -79,3 +79,5 @@
 &nco_clkref {
        clock-frequency = <900000000>;
 };
+
+#include "spi1-nvram.dtsi"
index 1666e6a..d9b966d 100644 (file)
                clock-output-names = "clkref";
        };
 
+       clk_200m: clock-200m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <200000000>;
+               clock-output-names = "clk_200m";
+       };
+
        /*
         * This is a fabulated representation of the input clock
         * to NCO since we don't know the true clock tree.
                        #performance-domain-cells = <0>;
                };
 
+               display_dfr: display-pipe@228200000 {
+                       compatible = "apple,t8112-display-pipe", "apple,h7-display-pipe";
+                       reg = <0x2 0x28200000 0x0 0xc000>,
+                             <0x2 0x28400000 0x0 0x4000>;
+                       reg-names = "be", "fe";
+                       power-domains = <&ps_dispdfr_fe>, <&ps_dispdfr_be>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 614 IRQ_TYPE_LEVEL_HIGH>,
+                                    <AIC_IRQ 618 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "be", "fe";
+                       iommus = <&displaydfr_dart 0>;
+                       status = "disabled";
+
+                       port {
+                               dfr_adp_out_mipi: endpoint {
+                                       remote-endpoint = <&dfr_mipi_in_adp>;
+                               };
+                       };
+               };
+
+               displaydfr_dart: iommu@228304000 {
+                       compatible = "apple,t8110-dart";
+                       reg = <0x2 0x28304000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 616 IRQ_TYPE_LEVEL_HIGH>;
+                       #iommu-cells = <1>;
+                       power-domains = <&ps_dispdfr_fe>;
+                       status = "disabled";
+               };
+
+               displaydfr_mipi: dsi@228600000 {
+                       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 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               dfr_mipi_in: port@0 {
+                                       reg = <0>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       dfr_mipi_in_adp: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&dfr_adp_out_mipi>;
+                                       };
+                               };
+
+                               dfr_mipi_out: port@1 {
+                                       reg = <1>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                               };
+                       };
+               };
+
                sio_dart: iommu@235004000 {
                        compatible = "apple,t8110-dart";
                        reg = <0x2 0x35004000 0x0 0x4000>;
                        status = "disabled";
                };
 
+               spi1: spi@235104000 {
+                       compatible = "apple,t8112-spi", "apple,spi";
+                       reg = <0x2 0x35104000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 749 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_200m>;
+                       pinctrl-0 = <&spi1_pins>;
+                       pinctrl-names = "default";
+                       power-domains = <&ps_spi1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi3: spi@23510c000 {
+                       compatible = "apple,t8112-spi", "apple,spi";
+                       reg = <0x2 0x3510c000 0x0 0x4000>;
+                       interrupt-parent = <&aic>;
+                       interrupts = <AIC_IRQ 751 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clkref>;
+                       pinctrl-0 = <&spi3_pins>;
+                       pinctrl-names = "default";
+                       power-domains = <&ps_spi3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled"; /* only used in J493 */
+               };
+
                serial0: serial@235200000 {
                        compatible = "apple,s5l-uart";
                        reg = <0x2 0x35200000 0x0 0x1000>;
                                         <APPLE_PINMUX(130, 1)>;
                        };
 
-                       spi3_pins: spi3-pins {
+                       spi1_pins: spi1-pins {
                                pinmux = <APPLE_PINMUX(46, 1)>,
                                        <APPLE_PINMUX(47, 1)>,
                                        <APPLE_PINMUX(48, 1)>,
                                        <APPLE_PINMUX(49, 1)>;
                        };
 
+                       spi3_pins: spi3-pins {
+                               pinmux = <APPLE_PINMUX(93, 1)>,
+                                       <APPLE_PINMUX(94, 1)>,
+                                       <APPLE_PINMUX(95, 1)>,
+                                       <APPLE_PINMUX(96, 1)>;
+                       };
+
                        pcie_pins: pcie-pins {
                                pinmux = <APPLE_PINMUX(162, 1)>,
                                         <APPLE_PINMUX(163, 1)>,
index abd0135..66ba6b0 100644 (file)
                clock-names = "smclk", "apb_pclk";
        };
 };
+
+&cpus {
+       cpu1: cpu@1 {
+               device_type = "cpu";
+               compatible = "arm,cortex-a35";
+               reg = <0x1>;
+               enable-method = "psci";
+               next-level-cache = <&L2_0>;
+       };
+
+       cpu2: cpu@2 {
+               device_type = "cpu";
+               compatible = "arm,cortex-a35";
+               reg = <0x2>;
+               enable-method = "psci";
+               next-level-cache = <&L2_0>;
+       };
+
+       cpu3: cpu@3 {
+               device_type = "cpu";
+               compatible = "arm,cortex-a35";
+               reg = <0x3>;
+               enable-method = "psci";
+               next-level-cache = <&L2_0>;
+       };
+};
index bb9b96f..56ada87 100644 (file)
@@ -21,7 +21,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       cpus {
+       cpus: cpus {
                #address-cells = <1>;
                #size-cells = <0>;
 
@@ -29,6 +29,7 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a35";
                        reg = <0>;
+                       enable-method = "psci";
                        next-level-cache = <&L2_0>;
                };
        };
diff --git a/src/arm64/arm/morello-fvp.dts b/src/arm64/arm/morello-fvp.dts
new file mode 100644 (file)
index 0000000..2072c0b
--- /dev/null
@@ -0,0 +1,77 @@
+// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
+/*
+ * Copyright (c) 2021-2024, Arm Limited. All rights reserved.
+ */
+
+/dts-v1/;
+#include "morello.dtsi"
+
+/ {
+       model = "Arm Morello Fixed Virtual Platform";
+       compatible = "arm,morello-fvp", "arm,morello";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       bp_refclock24mhz: clock-24000000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+               clock-output-names = "bp:clock24mhz";
+       };
+
+       block_0: virtio_block@1c170000 {
+               compatible = "virtio,mmio";
+               reg = <0x0 0x1c170000 0x0 0x200>;
+               interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       net_0: virtio_net@1c180000 {
+               compatible = "virtio,mmio";
+               reg = <0x0 0x1c180000 0x0 0x200>;
+               interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       rng_0: virtio_rng@1c190000 {
+               compatible = "virtio,mmio";
+               reg = <0x0 0x1c190000 0x0 0x200>;
+               interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       p9_0: virtio_p9@1c1a0000 {
+               compatible = "virtio,mmio";
+               reg = <0x0 0x1c1a0000 0x0 0x200>;
+               interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       kmi_0: kmi@1c150000 {
+               compatible = "arm,pl050", "arm,primecell";
+               reg = <0x0 0x1c150000 0x0 0x1000>;
+               interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&bp_refclock24mhz>, <&bp_refclock24mhz>;
+               clock-names = "KMIREFCLK", "apb_pclk";
+       };
+
+       kmi_1: kmi@1c160000 {
+               compatible = "arm,pl050", "arm,primecell";
+               reg = <0x0 0x1c160000 0x0 0x1000>;
+               interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&bp_refclock24mhz>, <&bp_refclock24mhz>;
+               clock-names = "KMIREFCLK", "apb_pclk";
+       };
+
+       eth_0: ethernet@1d100000 {
+               compatible = "smsc,lan91c111";
+               reg = <0x0 0x1d100000 0x0 0x10000>;
+               interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/src/arm64/arm/morello-sdp.dts b/src/arm64/arm/morello-sdp.dts
new file mode 100644 (file)
index 0000000..cee49de
--- /dev/null
@@ -0,0 +1,157 @@
+// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
+/*
+ * Copyright (c) 2021-2024, Arm Limited. All rights reserved.
+ */
+
+/dts-v1/;
+#include "morello.dtsi"
+
+/ {
+       model = "Arm Morello System Development Platform";
+       compatible = "arm,morello-sdp", "arm,morello";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       dpu_aclk: clock-350000000 {
+               /* 77.1 MHz derived from 24 MHz reference clock */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <350000000>;
+               clock-output-names = "aclk";
+       };
+
+       dpu_pixel_clk: clock-148500000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <148500000>;
+               clock-output-names = "pxclk";
+       };
+
+       i2c0: i2c@1c0f0000 {
+               compatible = "cdns,i2c-r1p14";
+               reg = <0x0 0x1c0f0000 0x0 0x1000>;
+               interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&dpu_aclk>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               clock-frequency = <100000>;
+
+               hdmi_tx: hdmi-transmitter@70 {
+                       compatible = "nxp,tda998x";
+                       reg = <0x70>;
+                       video-ports = <0x234501>;
+                       port {
+                               tda998x_0_input: endpoint {
+                                       remote-endpoint = <&dp_pl0_out0>;
+                               };
+                       };
+               };
+       };
+
+       dp0: display@2cc00000 {
+               compatible = "arm,mali-d32", "arm,mali-d71";
+               reg = <0x0 0x2cc00000 0x0 0x20000>;
+               interrupts = <0 69 4>;
+               clocks = <&dpu_aclk>;
+               clock-names = "aclk";
+               iommus = <&smmu_dp 0>, <&smmu_dp 1>, <&smmu_dp 2>, <&smmu_dp 3>,
+                        <&smmu_dp 8>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pl0: pipeline@0 {
+                       reg = <0>;
+                       clocks = <&dpu_pixel_clk>;
+                       clock-names = "pxclk";
+                       port {
+                               dp_pl0_out0: endpoint {
+                                       remote-endpoint = <&tda998x_0_input>;
+                               };
+                       };
+               };
+       };
+
+       smmu_ccix: iommu@4f000000 {
+               compatible = "arm,smmu-v3";
+               reg = <0x0 0x4f000000 0x0 0x40000>;
+
+               interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
+                                       <GIC_SPI 230 IRQ_TYPE_EDGE_RISING>,
+                                       <GIC_SPI 41 IRQ_TYPE_EDGE_RISING>,
+                                       <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>;
+               interrupt-names = "eventq", "gerror", "priq", "cmdq-sync";
+               msi-parent = <&its1 0>;
+               #iommu-cells = <1>;
+               dma-coherent;
+       };
+
+       smmu_pcie: iommu@4f400000 {
+               compatible = "arm,smmu-v3";
+               reg = <0x0 0x4f400000 0x0 0x40000>;
+
+               interrupts = <GIC_SPI 235 IRQ_TYPE_EDGE_RISING>,
+                                       <GIC_SPI 237 IRQ_TYPE_EDGE_RISING>,
+                                       <GIC_SPI 40 IRQ_TYPE_EDGE_RISING>,
+                                       <GIC_SPI 236 IRQ_TYPE_EDGE_RISING>;
+               interrupt-names = "eventq", "gerror", "priq", "cmdq-sync";
+               msi-parent = <&its2 0>;
+               #iommu-cells = <1>;
+               dma-coherent;
+       };
+
+       pcie_ctlr: pcie@28c0000000 {
+               device_type = "pci";
+               compatible = "pci-host-ecam-generic";
+               reg = <0x28 0xC0000000 0 0x10000000>;
+               ranges = <0x01000000 0x00 0x00000000 0x00 0x6f000000 0x00 0x00800000>,
+                               <0x02000000 0x00 0x60000000 0x00 0x60000000 0x00 0x0f000000>,
+                               <0x42000000 0x09 0x00000000 0x09 0x00000000 0x1f 0xc0000000>;
+               bus-range = <0 255>;
+               linux,pci-domain = <0>;
+               #address-cells = <3>;
+               #size-cells = <2>;
+               dma-coherent;
+               #interrupt-cells = <1>;
+               interrupt-map-mask = <0 0 0 7>;
+               interrupt-map = <0 0 0 1 &gic 0 0 0 169 IRQ_TYPE_LEVEL_HIGH>,
+                               <0 0 0 2 &gic 0 0 0 170 IRQ_TYPE_LEVEL_HIGH>,
+                               <0 0 0 3 &gic 0 0 0 171 IRQ_TYPE_LEVEL_HIGH>,
+                               <0 0 0 4 &gic 0 0 0 172 IRQ_TYPE_LEVEL_HIGH>;
+               msi-map = <0 &its_pcie 0 0x10000>;
+               iommu-map = <0 &smmu_pcie 0 0x10000>;
+       };
+
+       ccix_pcie_ctlr: pcie@4fc0000000 {
+               device_type = "pci";
+               compatible = "pci-host-ecam-generic";
+               reg = <0x4f 0xC0000000 0 0x10000000>;
+               ranges = <0x01000000 0x00 0x00000000 0x00 0x7f000000 0x00 0x00800000>,
+                               <0x02000000 0x00 0x70000000 0x00 0x70000000 0x00 0x0f000000>,
+                               <0x42000000 0x30 0x00000000 0x30 0x00000000 0x1f 0xc0000000>;
+               linux,pci-domain = <1>;
+               #address-cells = <3>;
+               #size-cells = <2>;
+               dma-coherent;
+               #interrupt-cells = <1>;
+               interrupt-map-mask = <0 0 0 7>;
+               interrupt-map = <0 0 0 1 &gic 0 0 0 201 IRQ_TYPE_LEVEL_HIGH>,
+                               <0 0 0 2 &gic 0 0 0 202 IRQ_TYPE_LEVEL_HIGH>,
+                               <0 0 0 3 &gic 0 0 0 203 IRQ_TYPE_LEVEL_HIGH>,
+                               <0 0 0 4 &gic 0 0 0 204 IRQ_TYPE_LEVEL_HIGH>;
+               msi-map = <0 &its_ccix 0 0x10000>;
+               iommu-map = <0 &smmu_ccix 0 0x10000>;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/src/arm64/arm/morello.dtsi b/src/arm64/arm/morello.dtsi
new file mode 100644 (file)
index 0000000..5bc1c72
--- /dev/null
@@ -0,0 +1,323 @@
+// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
+/*
+ * Copyright (c) 2020-2024, Arm Limited. All rights reserved.
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       interrupt-parent = <&gic>;
+
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       soc_refclk50mhz: clock-50000000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <50000000>;
+               clock-output-names = "apb_pclk";
+       };
+
+       soc_refclk85mhz: clock-85000000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <85000000>;
+               clock-output-names = "iofpga:aclk";
+       };
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       compatible = "arm,rainier";
+                       reg = <0x0 0x0>;
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       /* 4 ways set associative */
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <512>;
+                       next-level-cache = <&l2_0>;
+                       clocks = <&scmi_dvfs 0>;
+
+                       l2_0: l2-cache {
+                               compatible = "cache";
+                               cache-level = <2>;
+                               /* 8 ways set associative */
+                               cache-size = <0x100000>;
+                               cache-line-size = <64>;
+                               cache-sets = <2048>;
+                               cache-unified;
+                               next-level-cache = <&l3_0>;
+                       };
+               };
+
+               cpu1: cpu@100 {
+                       compatible = "arm,rainier";
+                       reg = <0x0 0x100>;
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       /* 4 ways set associative */
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <512>;
+                       next-level-cache = <&l2_1>;
+                       clocks = <&scmi_dvfs 0>;
+
+                       l2_1: l2-cache {
+                               compatible = "cache";
+                               cache-level = <2>;
+                               /* 8 ways set associative */
+                               cache-size = <0x100000>;
+                               cache-line-size = <64>;
+                               cache-sets = <2048>;
+                               cache-unified;
+                               next-level-cache = <&l3_0>;
+                       };
+               };
+
+               cpu2: cpu@10000 {
+                       compatible = "arm,rainier";
+                       reg = <0x0 0x10000>;
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       /* 4 ways set associative */
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <512>;
+                       next-level-cache = <&l2_2>;
+                       clocks = <&scmi_dvfs 1>;
+
+                       l2_2: l2-cache {
+                               compatible = "cache";
+                               cache-level = <2>;
+                               /* 8 ways set associative */
+                               cache-size = <0x100000>;
+                               cache-line-size = <64>;
+                               cache-sets = <2048>;
+                               cache-unified;
+                               next-level-cache = <&l3_0>;
+                       };
+               };
+
+               cpu3: cpu@10100 {
+                       compatible = "arm,rainier";
+                       reg = <0x0 0x10100>;
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       /* 4 ways set associative */
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <512>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <512>;
+                       next-level-cache = <&l2_3>;
+                       clocks = <&scmi_dvfs 1>;
+
+                       l2_3: l2-cache {
+                               compatible = "cache";
+                               cache-level = <2>;
+                               /* 8 ways set associative */
+                               cache-size = <0x100000>;
+                               cache-line-size = <64>;
+                               cache-sets = <2048>;
+                               cache-unified;
+                               next-level-cache = <&l3_0>;
+                       };
+               };
+
+               l3_0: l3-cache {
+                       compatible = "cache";
+                       cache-level = <3>;
+                       cache-size = <0x100000>;
+                       cache-unified;
+               };
+       };
+
+       firmware {
+               interrupt-parent = <&gic>;
+
+               scmi {
+                       compatible = "arm,scmi";
+                       mbox-names = "tx", "rx";
+                       mboxes = <&mailbox 1 0>, <&mailbox 1 1>;
+                       shmem = <&cpu_scp_hpri0>, <&cpu_scp_hpri1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       scmi_dvfs: protocol@13 {
+                               reg = <0x13>;
+                               #clock-cells = <1>;
+                       };
+
+                       scmi_clk: protocol@14 {
+                               reg = <0x14>;
+                               #clock-cells = <1>;
+                       };
+               };
+       };
+
+       /* The first bank of memory, memory map is actually provided by UEFI. */
+       memory@80000000 {
+               device_type = "memory";
+               /* [0x80000000-0xffffffff] */
+               reg = <0x00000000 0x80000000 0x0 0x7f000000>;
+       };
+
+       memory@8080000000 {
+               device_type = "memory";
+               /* [0x8080000000-0x83f7ffffff] */
+               reg = <0x00000080 0x80000000 0x3 0x78000000>;
+       };
+
+       pmu {
+               compatible = "arm,rainier-pmu";
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       psci {
+               compatible = "arm,psci-0.2";
+               method = "smc";
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               secure-firmware@ff000000 {
+                       reg = <0x0 0xff000000 0x0 0x01000000>;
+                       no-map;
+               };
+       };
+
+       spe-pmu {
+               compatible = "arm,statistical-profiling-extension-v1";
+               interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       soc: soc {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               interrupt-parent = <&gic>;
+               ranges;
+
+               uart0: serial@2a400000 {
+                       compatible = "arm,pl011", "arm,primecell";
+                       reg = <0x0 0x2a400000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&soc_refclk50mhz>, <&soc_refclk50mhz>;
+                       clock-names = "uartclk", "apb_pclk";
+
+                       status = "disabled";
+               };
+
+               gic: interrupt-controller@30000000 {
+                       compatible = "arm,gic-v3";
+                       reg = <0x0 0x30000000 0x0 0x10000>,     /* GICD */
+                             <0x0 0x300c0000 0x0 0x80000>;     /* GICR */
+
+                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       its1: msi-controller@30040000 {
+                               compatible = "arm,gic-v3-its";
+                               reg = <0x0 0x30040000 0x0 0x20000>;
+
+                               msi-controller;
+                               #msi-cells = <1>;
+                       };
+
+                       its2: msi-controller@30060000 {
+                               compatible = "arm,gic-v3-its";
+                               reg = <0x0 0x30060000 0x0 0x20000>;
+
+                               msi-controller;
+                               #msi-cells = <1>;
+                       };
+
+                       its_ccix: msi-controller@30080000 {
+                               compatible = "arm,gic-v3-its";
+                               reg = <0x0 0x30080000 0x0 0x20000>;
+
+                               msi-controller;
+                               #msi-cells = <1>;
+                       };
+
+                       its_pcie: msi-controller@300a0000 {
+                               compatible = "arm,gic-v3-its";
+                               reg = <0x0 0x300a0000 0x0 0x20000>;
+
+                               msi-controller;
+                               #msi-cells = <1>;
+                       };
+               };
+
+               smmu_dp: iommu@2ce00000 {
+                       compatible = "arm,smmu-v3";
+                       reg = <0x0 0x2ce00000 0x0 0x40000>;
+
+                       interrupts = <GIC_SPI 76 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 80 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 78 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "eventq", "gerror", "cmdq-sync";
+                       #iommu-cells = <1>;
+               };
+
+               mailbox: mhu@45000000 {
+                       compatible = "arm,mhu-doorbell", "arm,primecell";
+                       reg = <0x0 0x45000000 0x0 0x1000>;
+
+                       interrupts = <GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 316 IRQ_TYPE_LEVEL_HIGH>;
+                       #mbox-cells = <2>;
+                       clocks = <&soc_refclk50mhz>;
+                       clock-names = "apb_pclk";
+               };
+
+               sram: sram@6000000 {
+                       compatible = "mmio-sram";
+                       reg = <0x0 0x06000000 0x0 0x8000>;
+                       ranges = <0 0x0 0x06000000 0x8000>;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       cpu_scp_hpri0: scp-sram@0 {
+                               compatible = "arm,scmi-shmem";
+                               reg = <0x0 0x80>;
+                       };
+
+                       cpu_scp_hpri1: scp-sram@80 {
+                               compatible = "arm,scmi-shmem";
+                               reg = <0x80 0x80>;
+                       };
+               };
+       };
+
+       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>;
+       };
+};
index 3a376ab..61e064a 100644 (file)
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/soc/samsung,exynos-usi.h>
 
 / {
        model = "Samsung Galaxy S8 (SM-G950F)";
        compatible = "samsung,dreamlte", "samsung,exynos8895";
        chassis-type = "handset";
 
+       aliases {
+               mmc0 = &mmc;
+       };
+
        chosen {
                #address-cells = <2>;
                #size-cells = <1>;
                        wakeup-source;
                };
        };
+
+       /* TODO: Remove once PMIC is implemented  */
+       reg_placeholder: regulator-0 {
+               compatible = "regulator-fixed";
+               regulator-name = "reg-placeholder";
+       };
+};
+
+&hsi2c_23 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       touchscreen@48 {
+               compatible = "samsung,s6sy761";
+               reg = <0x48>;
+
+               /* TODO: Update once PMIC is implemented */
+               avdd-supply = <&reg_placeholder>;
+               vdd-supply = <&reg_placeholder>;
+
+               interrupt-parent = <&gpa1>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-0 = <&ts_int>;
+               pinctrl-names = "default";
+       };
 };
 
 &oscclk {
        clock-frequency = <26000000>;
 };
 
+&mmc {
+       pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus1 &sd2_bus4 &sd2_cd>;
+       pinctrl-names = "default";
+
+       bus-width = <4>;
+       card-detect-delay = <200>;
+       cd-gpios = <&gpa1 5 GPIO_ACTIVE_LOW>;
+       clock-frequency = <800000000>;
+       disable-wp;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+
+       /* TODO: Add regulators once PMIC is implemented */
+
+       samsung,dw-mshc-ciu-div = <3>;
+       samsung,dw-mshc-ddr-timing = <1 2>;
+       samsung,dw-mshc-sdr-timing = <0 3>;
+
+       status = "okay";
+};
+
 &pinctrl_alive {
        key_power: key-power-pins {
                samsung,pins = "gpa2-4";
                samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
                samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
        };
+
+       sd2_cd: sd2-cd-pins {
+               samsung,pins = "gpa1-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV4>;
+       };
+
+       ts_int: ts-int-pins {
+               samsung,pins = "gpa1-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+};
+
+&usi9 {
+       samsung,mode = <USI_MODE_I2C0_1>;
+       status = "okay";
 };
index 36657ab..f92d2a8 100644 (file)
                pinctrl7 = &pinctrl_peric1;
        };
 
-       arm-a53-pmu {
-               compatible = "arm,cortex-a53-pmu";
-               interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-affinity = <&cpu0>,
-                                    <&cpu1>,
-                                    <&cpu2>,
-                                    <&cpu3>;
-       };
-
-       mongoose-m2-pmu {
-               compatible = "samsung,mongoose-pmu";
-               interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-affinity = <&cpu4>,
-                                    <&cpu5>,
-                                    <&cpu6>,
-                                    <&cpu7>;
-       };
-
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                clock-output-names = "oscclk";
        };
 
+       pmu-a53 {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>,
+                                    <&cpu1>,
+                                    <&cpu2>,
+                                    <&cpu3>;
+       };
+
+       pmu-mongoose-m2 {
+               compatible = "samsung,mongoose-pmu";
+               interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu4>,
+                                    <&cpu5>,
+                                    <&cpu6>,
+                                    <&cpu7>;
+       };
+
        psci {
                compatible = "arm,psci";
                method = "smc";
                                      "usi1", "usi2", "usi3";
                };
 
+               syscon_peric0: syscon@10420000 {
+                       compatible = "samsung,exynos8895-peric0-sysreg", "syscon";
+                       reg = <0x10420000 0x2000>;
+                       clocks = <&cmu_peric0 CLK_GOUT_PERIC0_SYSREG_PERIC0_PCLK>;
+               };
+
                serial_0: serial@10430000 {
                        compatible = "samsung,exynos8895-uart";
                        reg = <0x10430000 0x100>;
                        status = "disabled";
                };
 
+               usi0: usi@10440000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x10440000 0x11000>;
+                       clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI00_I_PCLK>,
+                                <&cmu_peric0 CLK_GOUT_PERIC0_USI00_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric0 0x1000>;
+                       status = "disabled";
+
+                       hsi2c_5: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI00_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 364 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c5_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_2: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI00_I_PCLK>,
+                                        <&cmu_peric0 CLK_GOUT_PERIC0_USI00_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 366 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart2_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_2: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI00_I_PCLK>,
+                                        <&cmu_peric0 CLK_GOUT_PERIC0_USI00_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 367 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi2_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_6: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI00_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 365 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c6_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi1: usi@10460000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x10460000 0x11000>;
+                       clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI01_I_PCLK>,
+                                <&cmu_peric0 CLK_GOUT_PERIC0_USI01_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric0 0x1004>;
+                       status = "disabled";
+
+                       hsi2c_7: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI01_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c5_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_3: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI01_I_PCLK>,
+                                        <&cmu_peric0 CLK_GOUT_PERIC0_USI01_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart3_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_3: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI01_I_PCLK>,
+                                        <&cmu_peric0 CLK_GOUT_PERIC0_USI01_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 371 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi3_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_8: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI01_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c8_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi2: usi@10480000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x10480000 0x11000>;
+                       clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI02_I_PCLK>,
+                                <&cmu_peric0 CLK_GOUT_PERIC0_USI02_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric0 0x1008>;
+                       status = "disabled";
+
+                       hsi2c_9: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI02_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 372 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c9_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_4: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI02_I_PCLK>,
+                                        <&cmu_peric0 CLK_GOUT_PERIC0_USI02_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart4_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_4: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI02_I_PCLK>,
+                                        <&cmu_peric0 CLK_GOUT_PERIC0_USI02_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi4_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_10: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI02_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c10_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi3: usi@104a0000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x104a0000 0x11000>;
+                       clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI03_I_PCLK>,
+                                <&cmu_peric0 CLK_GOUT_PERIC0_USI03_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric0 0x100c>;
+                       status = "disabled";
+
+                       hsi2c_11: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI03_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 376 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c11_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_5: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI03_I_PCLK>,
+                                        <&cmu_peric0 CLK_GOUT_PERIC0_USI03_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart5_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_5: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI03_I_PCLK>,
+                                        <&cmu_peric0 CLK_GOUT_PERIC0_USI03_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi5_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_12: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric0 CLK_GOUT_PERIC0_USI03_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c12_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
                pinctrl_peric0: pinctrl@104d0000 {
                        compatible = "samsung,exynos8895-pinctrl";
                        reg = <0x104d0000 0x1000>;
                                      "usi10", "usi11", "usi12", "usi13";
                };
 
+               syscon_peric1: syscon@10820000 {
+                       compatible = "samsung,exynos8895-peric1-sysreg", "syscon";
+                       reg = <0x10820000 0x2000>;
+                       clocks = <&cmu_peric1 CLK_GOUT_PERIC1_SYSREG_PERIC1_PCLK>;
+               };
+
                serial_1: serial@10830000 {
                        compatible = "samsung,exynos8895-uart";
                        reg = <0x10830000 0x100>;
                        status = "disabled";
                };
 
+               usi4: usi@10840000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x10840000 0x11000>;
+                       clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI04_I_PCLK>,
+                                <&cmu_peric1 CLK_GOUT_PERIC1_USI04_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric1 0x1008>;
+                       status = "disabled";
+
+                       hsi2c_13: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI04_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 390 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c13_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_6: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI04_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI04_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 392 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart6_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_6: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI04_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI04_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi6_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_14: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI04_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 391 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c14_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi5: usi@10860000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x10860000 0x11000>;
+                       clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI05_I_PCLK>,
+                                <&cmu_peric1 CLK_GOUT_PERIC1_USI05_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric1 0x100c>;
+                       status = "disabled";
+
+                       hsi2c_15: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI05_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 394 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c15_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_7: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI05_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI05_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart7_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_7: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI05_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI05_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi7_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_16: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI05_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c16_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi6: usi@10880000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x10880000 0x11000>;
+                       clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI06_I_PCLK>,
+                                <&cmu_peric1 CLK_GOUT_PERIC1_USI06_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric1 0x1010>;
+                       status = "disabled";
+
+                       hsi2c_17: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI06_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c17_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_8: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI06_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI06_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart8_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_8: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI06_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI06_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi8_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_18: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI06_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c18_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi7: usi@108a0000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x108a0000 0x11000>;
+                       clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI07_I_PCLK>,
+                                <&cmu_peric1 CLK_GOUT_PERIC1_USI07_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric1 0x1014>;
+                       status = "disabled";
+
+                       hsi2c_19: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI07_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c19_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_9: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI07_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI07_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart9_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_9: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI07_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI07_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi9_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_20: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI07_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c20_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi8: usi@108c0000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x108c0000 0x11000>;
+                       clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI08_I_PCLK>,
+                                <&cmu_peric1 CLK_GOUT_PERIC1_USI08_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric1 0x1018>;
+                       status = "disabled";
+
+                       hsi2c_21: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI08_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c21_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_10: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI08_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI08_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart10_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_10: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0x0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI08_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI08_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi10_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_22: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI08_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c22_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi9: usi@108e0000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x108e0000 0x11000>;
+                       clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI09_I_PCLK>,
+                                <&cmu_peric1 CLK_GOUT_PERIC1_USI09_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric1 0x101c>;
+                       status = "disabled";
+
+                       hsi2c_23: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI09_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c23_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_11: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI09_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI09_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 412 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart11_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_11: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI09_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI09_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 413 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi11_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_24: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI09_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 411 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c24_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi10: usi@10900000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x10900000 0x11000>;
+                       clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI10_I_PCLK>,
+                                <&cmu_peric1 CLK_GOUT_PERIC1_USI10_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric1 0x1020>;
+                       status = "disabled";
+
+                       hsi2c_25: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI10_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 414 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c25_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_12: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI10_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI10_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 416 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart12_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_12: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI10_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI10_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 417 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi12_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_26: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI10_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 415 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c26_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi11: usi@10920000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x10920000 0x11000>;
+                       clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI11_I_PCLK>,
+                                <&cmu_peric1 CLK_GOUT_PERIC1_USI11_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric1 0x1024>;
+                       status = "disabled";
+
+                       hsi2c_27: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI11_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 418 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c27_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_13: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI11_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI11_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 420 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart13_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_13: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI11_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI11_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi13_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_28: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI11_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 419 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c28_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi12: usi@10940000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x10940000 0x11000>;
+                       clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI12_I_PCLK>,
+                                <&cmu_peric1 CLK_GOUT_PERIC1_USI12_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric1 0x1028>;
+                       status = "disabled";
+
+                       hsi2c_29: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI12_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c29_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_14: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI12_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI12_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart14_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_14: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI12_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI12_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi14_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_30: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI12_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c30_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
+               usi13: usi@10960000 {
+                       compatible = "samsung,exynos8895-usi";
+                       ranges = <0x0 0x10960000 0x11000>;
+                       clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI13_I_PCLK>,
+                                <&cmu_peric1 CLK_GOUT_PERIC1_USI13_I_SCLK_USI>;
+                       clock-names = "pclk", "ipclk";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       samsung,sysreg = <&syscon_peric1 0x102c>;
+                       status = "disabled";
+
+                       hsi2c_31: i2c@0 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x0 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI13_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c31_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       serial_15: serial@0 {
+                               compatible = "samsung,exynos8895-uart";
+                               reg = <0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI13_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI13_I_SCLK_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               interrupts = <GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&uart15_bus>;
+                               pinctrl-names = "default";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+
+                       spi_15: spi@0 {
+                               compatible = "samsung,exynos8895-spi",
+                                            "samsung,exynos850-spi";
+                               reg = <0 0x100>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI13_I_PCLK>,
+                                        <&cmu_peric1 CLK_GOUT_PERIC1_USI13_I_SCLK_USI>;
+                               clock-names = "spi", "spi_busclk0";
+                               interrupts = <GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&spi15_bus>;
+                               pinctrl-names = "default";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       hsi2c_32: i2c@10000 {
+                               compatible = "samsung,exynos8895-hsi2c";
+                               reg = <0x10000 0x1000>;
+                               clocks = <&cmu_peric1 CLK_GOUT_PERIC1_USI13_I_PCLK>;
+                               clock-names = "hsi2c";
+                               interrupts = <GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-0 = <&hsi2c32_bus>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+               };
+
                pinctrl_peric1: pinctrl@10980000 {
                        compatible = "samsung,exynos8895-pinctrl";
                        reg = <0x10980000 0x1000>;
                                      "ufs", "usbdrd30";
                };
 
+               syscon_fsys0: syscon@11020000 {
+                       compatible = "samsung,exynos8895-fsys0-sysreg", "syscon";
+                       reg = <0x11020000 0x2000>;
+                       clocks = <&cmu_fsys0 CLK_GOUT_FSYS0_SYSREG_FSYS0_PCLK>;
+               };
+
                pinctrl_fsys0: pinctrl@11050000 {
                        compatible = "samsung,exynos8895-pinctrl";
                        reg = <0x11050000 0x1000>;
                        clock-names = "oscclk", "bus", "pcie", "ufs", "mmc";
                };
 
+               syscon_fsys1: syscon@11420000 {
+                       compatible = "samsung,exynos8895-fsys1-sysreg", "syscon";
+                       reg = <0x11420000 0x2000>;
+                       clocks = <&cmu_fsys1 CLK_GOUT_FSYS1_SYSREG_FSYS1_PCLK>;
+               };
+
                pinctrl_fsys1: pinctrl@11430000 {
                        compatible = "samsung,exynos8895-pinctrl";
                        reg = <0x11430000 0x1000>;
                        interrupts = <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               mmc: mmc@11500000 {
+                       compatible = "samsung,exynos8895-dw-mshc-smu",
+                                    "samsung,exynos7-dw-mshc-smu";
+                       reg = <0x11500000 0x2000>;
+                       assigned-clocks = <&cmu_top CLK_MOUT_CMU_FSYS1_MMC_CARD>;
+                       assigned-clock-parents = <&cmu_top CLK_FOUT_SHARED4_PLL>;
+                       clocks = <&cmu_fsys1 CLK_GOUT_FSYS1_MMC_CARD_I_ACLK>,
+                                <&cmu_fsys1 CLK_GOUT_FSYS1_MMC_CARD_SDCLKIN>;
+                       clock-names = "biu", "ciu";
+                       fifo-depth = <64>;
+                       interrupts = <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                pinctrl_abox: pinctrl@13e60000 {
                        compatible = "samsung,exynos8895-pinctrl";
                        reg = <0x13e60000 0x1000>;
index 9d017db..dd7f99f 100644 (file)
                pinctrl6 = &pinctrl_vts;
        };
 
-       arm-a55-pmu {
-               compatible = "arm,cortex-a55-pmu";
-               interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>;
-
-               interrupt-affinity = <&cpu0>,
-                                    <&cpu1>,
-                                    <&cpu2>,
-                                    <&cpu3>;
-       };
-
-       arm-a76-pmu {
-               compatible = "arm,cortex-a76-pmu";
-               interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
-
-               interrupt-affinity = <&cpu4>,
-                                    <&cpu5>;
-       };
-
-       mongoose-m5-pmu {
-               compatible = "samsung,mongoose-pmu";
-               interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>;
-
-               interrupt-affinity = <&cpu6>,
-                                    <&cpu7>;
-       };
-
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                clock-output-names = "oscclk";
        };
 
+       pmu-a55 {
+               compatible = "arm,cortex-a55-pmu";
+               interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>;
+
+               interrupt-affinity = <&cpu0>,
+                                    <&cpu1>,
+                                    <&cpu2>,
+                                    <&cpu3>;
+       };
+
+       pmu-a76 {
+               compatible = "arm,cortex-a76-pmu";
+               interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
+
+               interrupt-affinity = <&cpu4>,
+                                    <&cpu5>;
+       };
+
+       pmu-mongoose-m5 {
+               compatible = "samsung,mongoose-pmu";
+               interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>;
+
+               interrupt-affinity = <&cpu6>,
+                                    <&cpu7>;
+       };
+
        psci {
                compatible = "arm,psci-0.2";
                method = "hvc";
                        reg = <0x10000000 0x100>;
                };
 
+               cmu_peris: clock-controller@10020000 {
+                       compatible = "samsung,exynos990-cmu-peris";
+                       reg = <0x10020000 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&oscclk>,
+                                <&cmu_top CLK_DOUT_CMU_PERIS_BUS>;
+                       clock-names = "oscclk", "bus";
+               };
+
+               timer@10040000 {
+                       compatible = "samsung,exynos990-mct",
+                                    "samsung,exynos4210-mct";
+                       reg = <0x10040000 0x800>;
+                       clocks = <&oscclk>, <&cmu_peris CLK_GOUT_PERIS_MCT_PCLK>;
+                       clock-names = "fin_pll", "mct";
+                       interrupts = <GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 467 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 468 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>,
+                                    <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: interrupt-controller@10101000 {
                        compatible = "arm,gic-400";
                        reg = <0x10101000 0x1000>,
index eb446cd..fc6ac53 100644 (file)
                        compatible = "arm,cortex-a78ae";
                        reg = <0x0 0x0>;
                        enable-method = "psci";
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_cache_cl0>;
                };
 
                cpu1: cpu@100 {
                        compatible = "arm,cortex-a78ae";
                        reg = <0x0 0x100>;
                        enable-method = "psci";
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_cache_cl0>;
                };
 
                cpu2: cpu@200 {
                        compatible = "arm,cortex-a78ae";
                        reg = <0x0 0x200>;
                        enable-method = "psci";
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_cache_cl0>;
                };
 
                cpu3: cpu@300 {
                        compatible = "arm,cortex-a78ae";
                        reg = <0x0 0x300>;
                        enable-method = "psci";
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_cache_cl0>;
                };
 
                cpu4: cpu@10000 {
                        compatible = "arm,cortex-a78ae";
                        reg = <0x0 0x10000>;
                        enable-method = "psci";
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_cache_cl1>;
                };
 
                cpu5: cpu@10100 {
                        compatible = "arm,cortex-a78ae";
                        reg = <0x0 0x10100>;
                        enable-method = "psci";
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_cache_cl1>;
                };
 
                cpu6: cpu@10200 {
                        compatible = "arm,cortex-a78ae";
                        reg = <0x0 0x10200>;
                        enable-method = "psci";
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_cache_cl1>;
                };
 
                cpu7: cpu@10300 {
                        compatible = "arm,cortex-a78ae";
                        reg = <0x0 0x10300>;
                        enable-method = "psci";
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_cache_cl1>;
                };
 
                cpu8: cpu@20000 {
                        compatible = "arm,cortex-a78ae";
                        reg = <0x0 0x20000>;
                        enable-method = "psci";
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_cache_cl2>;
                };
 
                cpu9: cpu@20100 {
                        compatible = "arm,cortex-a78ae";
                        reg = <0x0 0x20100>;
                        enable-method = "psci";
+                       i-cache-size = <0x10000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x10000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <256>;
+                       next-level-cache = <&l2_cache_cl2>;
+               };
+
+               l2_cache_cl0: l2-cache0 {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x40000>;
+                       cache-line-size = <64>;
+                       cache-sets = <512>;
+                       next-level-cache = <&l3_cache_cl0>;
+               };
+
+               l2_cache_cl1: l2-cache1 {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x40000>;
+                       cache-line-size = <64>;
+                       cache-sets = <512>;
+                       next-level-cache = <&l3_cache_cl1>;
+               };
+
+               l2_cache_cl2: l2-cache2 {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x40000>;
+                       cache-line-size = <64>;
+                       cache-sets = <512>;
+                       next-level-cache = <&l3_cache_cl2>;
+               };
+
+               l3_cache_cl0: l3-cache0 {
+                       compatible = "cache";
+                       cache-level = <3>;
+                       cache-unified;
+                       cache-size = <0x200000>;/* 2MB L3 cache for cpu cluster-0 */
+                       cache-line-size = <64>;
+                       cache-sets = <2048>;
+               };
+
+               l3_cache_cl1: l3-cache1 {
+                       compatible = "cache";
+                       cache-level = <3>;
+                       cache-unified;
+                       cache-size = <0x200000>;/* 2MB L3 cache for cpu cluster-1 */
+                       cache-line-size = <64>;
+                       cache-sets = <2048>;
+               };
+
+               l3_cache_cl2: l3-cache2 {
+                       compatible = "cache";
+                       cache-level = <3>;
+                       cache-unified;
+                       cache-size = <0x100000>;/* 1MB L3 cache for cpu cluster-2 */
+                       cache-line-size = <64>;
+                       cache-sets = <1365>;
                };
        };
 
                        interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               ufs_0_phy: phy@16e04000 {
+                       compatible = "samsung,exynosautov920-ufs-phy";
+                       reg = <0x16e04000 0x4000>;
+                       reg-names = "phy-pma";
+                       clocks = <&xtcxo>;
+                       clock-names = "ref_clk";
+                       samsung,pmu-syscon = <&pmu_system_controller>;
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+
                pinctrl_aud: pinctrl@1a460000 {
                        compatible = "samsung,exynosautov920-pinctrl";
                        reg = <0x1a460000 0x10000>;
index e58881c..8df42be 100644 (file)
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/usb/pd.h>
-#include "gs101-pinctrl.h"
-#include "gs101.dtsi"
+#include "gs101-pixel-common.dtsi"
 
 / {
        model = "Oriole";
        compatible = "google,gs101-oriole", "google,gs101";
-
-       aliases {
-               serial0 = &serial_0;
-       };
-
-       chosen {
-               /* Bootloader expects bootargs specified otherwise it crashes */
-               bootargs = "";
-               stdout-path = &serial_0;
-       };
-
-       gpio-keys {
-               compatible = "gpio-keys";
-               pinctrl-0 = <&key_voldown>, <&key_volup>, <&key_power>;
-               pinctrl-names = "default";
-
-               button-vol-down {
-                       label = "KEY_VOLUMEDOWN";
-                       linux,code = <KEY_VOLUMEDOWN>;
-                       gpios = <&gpa7 3 GPIO_ACTIVE_LOW>;
-                       wakeup-source;
-               };
-
-               button-vol-up {
-                       label = "KEY_VOLUMEUP";
-                       linux,code = <KEY_VOLUMEUP>;
-                       gpios = <&gpa8 1 GPIO_ACTIVE_LOW>;
-                       wakeup-source;
-               };
-
-               button-power {
-                       label = "KEY_POWER";
-                       linux,code = <KEY_POWER>;
-                       gpios = <&gpa10 1 GPIO_ACTIVE_LOW>;
-                       wakeup-source;
-               };
-       };
-
-       /* TODO: Remove this once PMIC is implemented  */
-       reg_placeholder: regulator-0 {
-               compatible = "regulator-fixed";
-               regulator-name = "placeholder_reg";
-       };
-
-       /* TODO: Remove this once S2MPG11 slave PMIC is implemented  */
-       ufs_0_fixed_vcc_reg: regulator-1 {
-               compatible = "regulator-fixed";
-               regulator-name = "ufs-vcc";
-               gpio = <&gpp0 1 GPIO_ACTIVE_HIGH>;
-               regulator-boot-on;
-               enable-active-high;
-       };
-};
-
-&ext_24_5m {
-       clock-frequency = <24576000>;
-};
-
-&ext_200m {
-       clock-frequency = <200000000>;
-};
-
-&hsi2c_8 {
-       status = "okay";
-
-       eeprom: eeprom@50 {
-               compatible = "atmel,24c08";
-               reg = <0x50>;
-       };
-};
-
-&hsi2c_12 {
-       status = "okay";
-       /* TODO: add the devices once drivers exist */
-
-       usb-typec@25 {
-               compatible = "maxim,max77759-tcpci", "maxim,max33359";
-               reg = <0x25>;
-               interrupts-extended = <&gpa8 2 IRQ_TYPE_LEVEL_LOW>;
-               pinctrl-0 = <&typec_int>;
-               pinctrl-names = "default";
-
-               connector {
-                       compatible = "usb-c-connector";
-                       label = "USB-C";
-                       data-role = "dual";
-                       power-role = "dual";
-                       self-powered;
-                       try-power-role = "sink";
-                       op-sink-microwatt = <2600000>;
-                       slow-charger-loop;
-                       /*
-                        * max77759 operating in reverse boost mode (0xA) can
-                        * source up to 1.5A while extboost can only do ~1A.
-                        * Since extboost is the primary path, advertise 900mA.
-                        */
-                       source-pdos = <PDO_FIXED(5000, 900,
-                                                (PDO_FIXED_SUSPEND
-                                                 | PDO_FIXED_USB_COMM
-                                                 | PDO_FIXED_DATA_SWAP
-                                                 | PDO_FIXED_DUAL_ROLE))>;
-                       sink-pdos = <PDO_FIXED(5000, 3000,
-                                              (PDO_FIXED_DATA_SWAP
-                                               | PDO_FIXED_USB_COMM
-                                               | PDO_FIXED_HIGHER_CAP
-                                               | PDO_FIXED_DUAL_ROLE))
-                                    PDO_FIXED(9000, 2200, 0)
-                                    PDO_PPS_APDO(5000, 11000, 3000)>;
-                       sink-vdos = <VDO_IDH(1, 1, IDH_PTYPE_PERIPH, 0,
-                                            IDH_PTYPE_DFP_HOST, 2, 0x18d1)
-                                    VDO_CERT(0x0)
-                                    VDO_PRODUCT(0x4ee1, 0x0)
-                                    VDO_UFP(UFP_VDO_VER1_2,
-                                            (DEV_USB2_CAPABLE
-                                             | DEV_USB3_CAPABLE),
-                                            UFP_RECEPTACLE, 0,
-                                            AMA_VCONN_NOT_REQ, 0,
-                                            UFP_ALTMODE_NOT_SUPP,
-                                            UFP_USB32_GEN1)
-                                    /* padding */ 0
-                                    VDO_DFP(DFP_VDO_VER1_1,
-                                            (HOST_USB2_CAPABLE
-                                             | HOST_USB3_CAPABLE),
-                                            DFP_RECEPTACLE, 0)>;
-                       sink-vdos-v1 = <VDO_IDH(1, 1, IDH_PTYPE_PERIPH, 0,
-                                               0, 0, 0x18d1)
-                                       VDO_CERT(0x0)
-                                       VDO_PRODUCT(0x4ee1, 0x0)>;
-                       /*
-                        * Until bootloader is updated to set those two when
-                        * console is enabled, we disable PD here.
-                        */
-                       pd-disable;
-                       typec-power-opmode = "default";
-
-                       ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@0 {
-                                       reg = <0>;
-
-                                       usbc0_orien_sw: endpoint {
-                                               remote-endpoint = <&usbdrd31_phy_orien_switch>;
-                                       };
-                               };
-
-                               port@1 {
-                                       reg = <1>;
-
-                                       usbc0_role_sw: endpoint {
-                                               remote-endpoint = <&usbdrd31_dwc3_role_switch>;
-                                       };
-                               };
-                       };
-               };
-       };
-};
-
-&pinctrl_far_alive {
-       key_voldown: key-voldown-pins {
-               samsung,pins = "gpa7-3";
-               samsung,pin-function = <GS101_PIN_FUNC_EINT>;
-               samsung,pin-pud = <GS101_PIN_PULL_NONE>;
-               samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
-       };
-
-       key_volup: key-volup-pins {
-               samsung,pins = "gpa8-1";
-               samsung,pin-function = <GS101_PIN_FUNC_EINT>;
-               samsung,pin-pud = <GS101_PIN_PULL_NONE>;
-               samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
-       };
-
-       typec_int: typec-int-pins {
-               samsung,pins = "gpa8-2";
-               samsung,pin-function = <GS101_PIN_FUNC_EINT>;
-               samsung,pin-pud = <GS101_PIN_PULL_UP>;
-               samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
-       };
-};
-
-&pinctrl_gpio_alive {
-       key_power: key-power-pins {
-               samsung,pins = "gpa10-1";
-               samsung,pin-function = <GS101_PIN_FUNC_EINT>;
-               samsung,pin-pud = <GS101_PIN_PULL_NONE>;
-               samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
-       };
-};
-
-&serial_0 {
-       status = "okay";
-};
-
-&ufs_0 {
-       status = "okay";
-       vcc-supply = <&ufs_0_fixed_vcc_reg>;
-};
-
-&ufs_0_phy {
-       status = "okay";
-};
-
-&usbdrd31 {
-       vdd10-supply = <&reg_placeholder>;
-       vdd33-supply = <&reg_placeholder>;
-       status = "okay";
-};
-
-&usbdrd31_dwc3 {
-       dr_mode = "otg";
-       usb-role-switch;
-       role-switch-default-mode = "peripheral";
-       maximum-speed = "super-speed-plus";
-       status = "okay";
-
-       port {
-               usbdrd31_dwc3_role_switch: endpoint {
-                       remote-endpoint = <&usbc0_role_sw>;
-               };
-       };
-};
-
-&usbdrd31_phy {
-       orientation-switch;
-       /* TODO: Update these once PMIC is implemented */
-       pll-supply = <&reg_placeholder>;
-       dvdd-usb20-supply = <&reg_placeholder>;
-       vddh-usb20-supply = <&reg_placeholder>;
-       vdd33-usb20-supply = <&reg_placeholder>;
-       vdda-usbdp-supply = <&reg_placeholder>;
-       vddh-usbdp-supply = <&reg_placeholder>;
-       status = "okay";
-
-       port {
-               usbdrd31_phy_orien_switch: endpoint {
-                       remote-endpoint = <&usbc0_orien_sw>;
-               };
-       };
-};
-
-&usi_uart {
-       samsung,clkreq-on; /* needed for UART mode */
-       status = "okay";
-};
-
-&usi8 {
-       samsung,mode = <USI_V2_I2C>;
-       status = "okay";
 };
 
-&usi12 {
-       samsung,mode = <USI_V2_I2C>;
+&cont_splash_mem {
+       reg = <0x0 0xfac00000 (1080 * 2400 * 4)>;
        status = "okay";
 };
 
-&watchdog_cl0 {
-       timeout-sec = <30>;
+&framebuffer0 {
+       width = <1080>;
+       height = <2400>;
+       stride = <(1080 * 4)>;
+       format = "a8r8g8b8";
        status = "okay";
 };
diff --git a/src/arm64/exynos/google/gs101-pixel-common.dtsi b/src/arm64/exynos/google/gs101-pixel-common.dtsi
new file mode 100644 (file)
index 0000000..b252304
--- /dev/null
@@ -0,0 +1,294 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Device Tree nodes common for all GS101-based Pixel
+ *
+ * Copyright 2021-2023 Google LLC
+ * Copyright 2023 Linaro Ltd - <peter.griffin@linaro.org>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/usb/pd.h>
+#include "gs101-pinctrl.h"
+#include "gs101.dtsi"
+
+/ {
+       aliases {
+               serial0 = &serial_0;
+       };
+
+       chosen {
+               /* Bootloader expects bootargs specified otherwise it crashes */
+               bootargs = "";
+               stdout-path = &serial_0;
+
+               /* Use display framebuffer as setup by bootloader */
+               framebuffer0: framebuffer-0 {
+                       compatible = "simple-framebuffer";
+                       memory-region = <&cont_splash_mem>;
+                       /* format properties to be added by actual board */
+                       status = "disabled";
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-0 = <&key_voldown>, <&key_volup>, <&key_power>;
+               pinctrl-names = "default";
+
+               button-vol-down {
+                       label = "KEY_VOLUMEDOWN";
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       gpios = <&gpa7 3 GPIO_ACTIVE_LOW>;
+                       wakeup-source;
+               };
+
+               button-vol-up {
+                       label = "KEY_VOLUMEUP";
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpios = <&gpa8 1 GPIO_ACTIVE_LOW>;
+                       wakeup-source;
+               };
+
+               button-power {
+                       label = "KEY_POWER";
+                       linux,code = <KEY_POWER>;
+                       gpios = <&gpa10 1 GPIO_ACTIVE_LOW>;
+                       wakeup-source;
+               };
+       };
+
+       /* TODO: Remove this once PMIC is implemented  */
+       reg_placeholder: regulator-0 {
+               compatible = "regulator-fixed";
+               regulator-name = "placeholder_reg";
+       };
+
+       /* TODO: Remove this once S2MPG11 slave PMIC is implemented  */
+       ufs_0_fixed_vcc_reg: regulator-1 {
+               compatible = "regulator-fixed";
+               regulator-name = "ufs-vcc";
+               gpio = <&gpp0 1 GPIO_ACTIVE_HIGH>;
+               regulator-boot-on;
+               enable-active-high;
+       };
+
+       reserved-memory {
+               cont_splash_mem: splash@fac00000 {
+                       /* size to be updated by actual board */
+                       reg = <0x0 0xfac00000 0x0>;
+                       no-map;
+                       status = "disabled";
+               };
+       };
+};
+
+&ext_24_5m {
+       clock-frequency = <24576000>;
+};
+
+&ext_200m {
+       clock-frequency = <200000000>;
+};
+
+&hsi2c_8 {
+       status = "okay";
+
+       eeprom: eeprom@50 {
+               compatible = "atmel,24c08";
+               reg = <0x50>;
+       };
+};
+
+&hsi2c_12 {
+       status = "okay";
+       /* TODO: add the devices once drivers exist */
+
+       usb-typec@25 {
+               compatible = "maxim,max77759-tcpci", "maxim,max33359";
+               reg = <0x25>;
+               interrupts-extended = <&gpa8 2 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-0 = <&typec_int>;
+               pinctrl-names = "default";
+
+               connector {
+                       compatible = "usb-c-connector";
+                       label = "USB-C";
+                       data-role = "dual";
+                       power-role = "dual";
+                       self-powered;
+                       try-power-role = "sink";
+                       op-sink-microwatt = <2600000>;
+                       slow-charger-loop;
+                       /*
+                        * max77759 operating in reverse boost mode (0xA) can
+                        * source up to 1.5A while extboost can only do ~1A.
+                        * Since extboost is the primary path, advertise 900mA.
+                        */
+                       source-pdos = <PDO_FIXED(5000, 900,
+                                                (PDO_FIXED_SUSPEND
+                                                 | PDO_FIXED_USB_COMM
+                                                 | PDO_FIXED_DATA_SWAP
+                                                 | PDO_FIXED_DUAL_ROLE))>;
+                       sink-pdos = <PDO_FIXED(5000, 3000,
+                                              (PDO_FIXED_DATA_SWAP
+                                               | PDO_FIXED_USB_COMM
+                                               | PDO_FIXED_HIGHER_CAP
+                                               | PDO_FIXED_DUAL_ROLE))
+                                    PDO_FIXED(9000, 2200, 0)
+                                    PDO_PPS_APDO(5000, 11000, 3000)>;
+                       sink-vdos = <VDO_IDH(1, 1, IDH_PTYPE_PERIPH, 0,
+                                            IDH_PTYPE_DFP_HOST, 2, 0x18d1)
+                                    VDO_CERT(0x0)
+                                    VDO_PRODUCT(0x4ee1, 0x0)
+                                    VDO_UFP(UFP_VDO_VER1_2,
+                                            (DEV_USB2_CAPABLE
+                                             | DEV_USB3_CAPABLE),
+                                            UFP_RECEPTACLE, 0,
+                                            AMA_VCONN_NOT_REQ, 0,
+                                            UFP_ALTMODE_NOT_SUPP,
+                                            UFP_USB32_GEN1)
+                                    /* padding */ 0
+                                    VDO_DFP(DFP_VDO_VER1_1,
+                                            (HOST_USB2_CAPABLE
+                                             | HOST_USB3_CAPABLE),
+                                            DFP_RECEPTACLE, 0)>;
+                       sink-vdos-v1 = <VDO_IDH(1, 1, IDH_PTYPE_PERIPH, 0,
+                                               0, 0, 0x18d1)
+                                       VDO_CERT(0x0)
+                                       VDO_PRODUCT(0x4ee1, 0x0)>;
+                       /*
+                        * Until bootloader is updated to set those two when
+                        * console is enabled, we disable PD here.
+                        */
+                       pd-disable;
+                       typec-power-opmode = "default";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       usbc0_orien_sw: endpoint {
+                                               remote-endpoint = <&usbdrd31_phy_orien_switch>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       usbc0_role_sw: endpoint {
+                                               remote-endpoint = <&usbdrd31_dwc3_role_switch>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
+
+&pinctrl_far_alive {
+       key_voldown: key-voldown-pins {
+               samsung,pins = "gpa7-3";
+               samsung,pin-function = <GS101_PIN_FUNC_EINT>;
+               samsung,pin-pud = <GS101_PIN_PULL_NONE>;
+               samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
+       };
+
+       key_volup: key-volup-pins {
+               samsung,pins = "gpa8-1";
+               samsung,pin-function = <GS101_PIN_FUNC_EINT>;
+               samsung,pin-pud = <GS101_PIN_PULL_NONE>;
+               samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
+       };
+
+       typec_int: typec-int-pins {
+               samsung,pins = "gpa8-2";
+               samsung,pin-function = <GS101_PIN_FUNC_EINT>;
+               samsung,pin-pud = <GS101_PIN_PULL_UP>;
+               samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
+       };
+};
+
+&pinctrl_gpio_alive {
+       key_power: key-power-pins {
+               samsung,pins = "gpa10-1";
+               samsung,pin-function = <GS101_PIN_FUNC_EINT>;
+               samsung,pin-pud = <GS101_PIN_PULL_NONE>;
+               samsung,pin-drv = <GS101_PIN_DRV_2_5_MA>;
+       };
+};
+
+&serial_0 {
+       status = "okay";
+};
+
+&ufs_0 {
+       status = "okay";
+       vcc-supply = <&ufs_0_fixed_vcc_reg>;
+};
+
+&ufs_0_phy {
+       status = "okay";
+};
+
+&usbdrd31 {
+       vdd10-supply = <&reg_placeholder>;
+       vdd33-supply = <&reg_placeholder>;
+       status = "okay";
+};
+
+&usbdrd31_dwc3 {
+       dr_mode = "otg";
+       usb-role-switch;
+       role-switch-default-mode = "peripheral";
+       maximum-speed = "super-speed-plus";
+       status = "okay";
+
+       port {
+               usbdrd31_dwc3_role_switch: endpoint {
+                       remote-endpoint = <&usbc0_role_sw>;
+               };
+       };
+};
+
+&usbdrd31_phy {
+       orientation-switch;
+       /* TODO: Update these once PMIC is implemented */
+       pll-supply = <&reg_placeholder>;
+       dvdd-usb20-supply = <&reg_placeholder>;
+       vddh-usb20-supply = <&reg_placeholder>;
+       vdd33-usb20-supply = <&reg_placeholder>;
+       vdda-usbdp-supply = <&reg_placeholder>;
+       vddh-usbdp-supply = <&reg_placeholder>;
+       status = "okay";
+
+       port {
+               usbdrd31_phy_orien_switch: endpoint {
+                       remote-endpoint = <&usbc0_orien_sw>;
+               };
+       };
+};
+
+&usi_uart {
+       samsung,clkreq-on; /* needed for UART mode */
+       status = "okay";
+};
+
+&usi8 {
+       samsung,mode = <USI_V2_I2C>;
+       status = "okay";
+};
+
+&usi12 {
+       samsung,mode = <USI_V2_I2C>;
+       status = "okay";
+};
+
+&watchdog_cl0 {
+       timeout-sec = <30>;
+       status = "okay";
+};
diff --git a/src/arm64/exynos/google/gs101-raven.dts b/src/arm64/exynos/google/gs101-raven.dts
new file mode 100644 (file)
index 0000000..1e7e6b3
--- /dev/null
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Raven Device Tree
+ *
+ * Copyright 2021-2023 Google LLC
+ * Copyright 2023-2025 Linaro Ltd
+ */
+
+/dts-v1/;
+
+#include "gs101-pixel-common.dtsi"
+
+/ {
+       model = "Raven";
+       compatible = "google,gs101-raven", "google,gs101";
+};
+
+&cont_splash_mem {
+       reg = <0x0 0xfac00000 (1440 * 3120 * 4)>;
+       status = "okay";
+};
+
+&framebuffer0 {
+       width = <1440>;
+       height = <3120>;
+       stride = <(1440 * 4)>;
+       format = "a8r8g8b8";
+       status = "okay";
+};
index c5335dd..3de3a75 100644 (file)
@@ -73,7 +73,7 @@
                        compatible = "arm,cortex-a55";
                        reg = <0x0000>;
                        enable-method = "psci";
-                       cpu-idle-states = <&ANANKE_CPU_SLEEP>;
+                       cpu-idle-states = <&ananke_cpu_sleep>;
                        capacity-dmips-mhz = <250>;
                        dynamic-power-coefficient = <70>;
                };
@@ -83,7 +83,7 @@
                        compatible = "arm,cortex-a55";
                        reg = <0x0100>;
                        enable-method = "psci";
-                       cpu-idle-states = <&ANANKE_CPU_SLEEP>;
+                       cpu-idle-states = <&ananke_cpu_sleep>;
                        capacity-dmips-mhz = <250>;
                        dynamic-power-coefficient = <70>;
                };
@@ -93,7 +93,7 @@
                        compatible = "arm,cortex-a55";
                        reg = <0x0200>;
                        enable-method = "psci";
-                       cpu-idle-states = <&ANANKE_CPU_SLEEP>;
+                       cpu-idle-states = <&ananke_cpu_sleep>;
                        capacity-dmips-mhz = <250>;
                        dynamic-power-coefficient = <70>;
                };
                        compatible = "arm,cortex-a55";
                        reg = <0x0300>;
                        enable-method = "psci";
-                       cpu-idle-states = <&ANANKE_CPU_SLEEP>;
+                       cpu-idle-states = <&ananke_cpu_sleep>;
                        capacity-dmips-mhz = <250>;
                        dynamic-power-coefficient = <70>;
                };
                        compatible = "arm,cortex-a76";
                        reg = <0x0400>;
                        enable-method = "psci";
-                       cpu-idle-states = <&ENYO_CPU_SLEEP>;
+                       cpu-idle-states = <&enyo_cpu_sleep>;
                        capacity-dmips-mhz = <620>;
                        dynamic-power-coefficient = <284>;
                };
                        compatible = "arm,cortex-a76";
                        reg = <0x0500>;
                        enable-method = "psci";
-                       cpu-idle-states = <&ENYO_CPU_SLEEP>;
+                       cpu-idle-states = <&enyo_cpu_sleep>;
                        capacity-dmips-mhz = <620>;
                        dynamic-power-coefficient = <284>;
                };
                        compatible = "arm,cortex-x1";
                        reg = <0x0600>;
                        enable-method = "psci";
-                       cpu-idle-states = <&HERA_CPU_SLEEP>;
+                       cpu-idle-states = <&hera_cpu_sleep>;
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <650>;
                };
                        compatible = "arm,cortex-x1";
                        reg = <0x0700>;
                        enable-method = "psci";
-                       cpu-idle-states = <&HERA_CPU_SLEEP>;
+                       cpu-idle-states = <&hera_cpu_sleep>;
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <650>;
                };
                idle-states {
                        entry-method = "psci";
 
-                       ANANKE_CPU_SLEEP: cpu-ananke-sleep {
+                       ananke_cpu_sleep: cpu-ananke-sleep {
                                idle-state-name = "c2";
                                compatible = "arm,idle-state";
                                arm,psci-suspend-param = <0x0010000>;
                                min-residency-us = <2000>;
                        };
 
-                       ENYO_CPU_SLEEP: cpu-enyo-sleep {
+                       enyo_cpu_sleep: cpu-enyo-sleep {
                                idle-state-name = "c2";
                                compatible = "arm,idle-state";
                                arm,psci-suspend-param = <0x0010000>;
                                min-residency-us = <2500>;
                        };
 
-                       HERA_CPU_SLEEP: cpu-hera-sleep {
+                       hera_cpu_sleep: cpu-hera-sleep {
                                idle-state-name = "c2";
                                compatible = "arm,idle-state";
                                arm,psci-suspend-param = <0x0010000>;
                clock-output-names = "ext-200m";
        };
 
+       firmware {
+               acpm_ipc: power-management {
+                       compatible = "google,gs101-acpm-ipc";
+                       mboxes = <&ap2apm_mailbox>;
+                       shmem = <&apm_sram>;
+               };
+       };
+
        pmu-0 {
                compatible = "arm,cortex-a55-pmu";
                interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_cluster0>;
 
                        poweroff: syscon-poweroff {
                                compatible = "syscon-poweroff";
-                               regmap = <&pmu_system_controller>;
                                offset = <0x3e9c>; /* PAD_CTRL_PWR_HOLD */
-                               mask = <0x100>; /* reset value */
+                               mask = <0x00000100>;
+                               value = <0x0>;
                        };
 
                        reboot: syscon-reboot {
                                compatible = "syscon-reboot";
-                               regmap = <&pmu_system_controller>;
                                offset = <0x3a00>; /* SYSTEM_CONFIGURATION */
                                mask = <0x2>; /* SWRESET_SYSTEM */
                                value = <0x2>; /* reset value */
                        };
+
+                       reboot-mode {
+                               compatible = "syscon-reboot-mode";
+                               offset = <0x0810>; /* EXYNOS_PMU_SYSIP_DAT0 */
+                               mode-bootloader = <0xfc>;
+                               mode-charge = <0x0a>;
+                               mode-fastboot = <0xfa>;
+                               mode-reboot-ab-update = <0x52>;
+                               mode-recovery = <0xff>;
+                               mode-rescue = <0xf9>;
+                               mode-shutdown-thermal = <0x51>;
+                               mode-shutdown-thermal-battery = <0x51>;
+                       };
                };
 
                pinctrl_gpio_alive: pinctrl@174d0000 {
                        };
                };
 
+               ap2apm_mailbox: mailbox@17610000 {
+                       compatible = "google,gs101-mbox";
+                       reg = <0x17610000 0x1000>;
+                       clocks = <&cmu_apm CLK_GOUT_APM_MAILBOX_APM_AP_PCLK>;
+                       clock-names = "pclk";
+                       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH 0>;
+                       #mbox-cells = <0>;
+               };
+
                pinctrl_gsactrl: pinctrl@17940000 {
                        compatible = "google,gs101-pinctrl";
                        reg = <0x17940000 0x00001000>;
                        /* TODO: update once support for this CMU exists */
                        clocks = <0>;
                        clock-names = "pclk";
+                       status = "disabled";
                };
 
                cmu_top: clock-controller@1e080000 {
                };
        };
 
+       apm_sram: sram@2039000 {
+               compatible = "mmio-sram";
+               reg = <0x0 0x2039000 0x40000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x0 0x0 0x2039000 0x40000>;
+       };
+
        timer {
                compatible = "arm,armv8-timer";
                interrupts =
index bc0d894..3a11068 100644 (file)
                los-gpios = <&sfpgpio 7 GPIO_ACTIVE_HIGH>;
                maximum-power-milliwatt = <2000>;
        };
+
+       usb1v2_supply: regulator-usbhub-1v2 {
+               compatible = "regulator-fixed";
+               regulator-name = "usbhub_1v2";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               regulator-always-on;
+       };
+
+       system3v3_supply: regulator-system-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "system_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
 };
 
 /* XG1 - Upper SFP */
                compatible = "atmel,at97sc3204t";
                reg = <0x29>;
        };
+
+       usbhub: usb-hub@2d {
+               compatible = "microchip,usb5744";
+               reg = <0x2d>;
+       };
+
 };
 
 &i2c2 {
        };
 };
 
+/* LS1088A USB Port 0 - direct to bottom USB-A port */
 &usb0 {
        status = "okay";
 };
 
+/* LS1088A USB Port 1 - to Microchip USB5744 USB Hub */
 &usb1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
        status = "okay";
+
+       hub_2_0: hub@1 {
+               compatible = "usb424,2744";
+               reg = <1>;
+               peer-hub = <&hub_3_0>;
+               i2c-bus = <&usbhub>;
+               vdd-supply = <&system3v3_supply>;
+               vdd2-supply = <&usb1v2_supply>;
+       };
+
+       hub_3_0: hub@2 {
+               compatible = "usb424,5744";
+               reg = <2>;
+               peer-hub = <&hub_2_0>;
+               i2c-bus = <&usbhub>;
+               vdd-supply = <&system3v3_supply>;
+               vdd2-supply = <&usb1v2_supply>;
+       };
 };
index a3fc945..dbea1ee 100644 (file)
        status = "okay";
 };
 
+/* Apalis HDMI Audio */
+&sai5 {
+       assigned-clocks = <&acm IMX_ADMA_ACM_SAI5_MCLK_SEL>,
+                         <&acm IMX_ADMA_ACM_AUD_CLK1_SEL>,
+                         <&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>,
+                         <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_PLL>,
+                         <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_SLV_BUS>,
+                         <&clk IMX_SC_R_AUDIO_PLL_1 IMX_SC_PM_CLK_MST_BUS>,
+                         <&sai5_lpcg 0>;
+       assigned-clock-parents = <&aud_pll_div0_lpcg 0>, <&aud_rec1_lpcg 0>;
+       assigned-clock-rates = <0>, <0>, <786432000>, <49152000>, <12288000>,
+                              <722534400>, <45158400>, <11289600>, <49152000>;
+};
+
 /* TODO: Apalis SATA1 */
 
 /* Apalis SPDIF1 */
index 70a8aa1..9b8b138 100644 (file)
@@ -57,8 +57,9 @@ hsio_subsys: bus@5f000000 {
                ranges = <0x81000000 0 0x00000000 0x8ff80000 0 0x00010000>,
                         <0x82000000 0 0x80000000 0x80000000 0 0x0ff00000>;
                #interrupt-cells = <1>;
-               interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "msi";
+               interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "msi", "dma";
                #address-cells = <3>;
                #size-cells = <2>;
                clocks = <&pcieb_lpcg IMX_LPCG_CLK_6>,
@@ -68,9 +69,9 @@ hsio_subsys: bus@5f000000 {
                bus-range = <0x00 0xff>;
                device_type = "pci";
                interrupt-map = <0 0 0 1 &gic 0 105 4>,
-                                <0 0 0 2 &gic 0 106 4>,
-                                <0 0 0 3 &gic 0 107 4>,
-                                <0 0 0 4 &gic 0 108 4>;
+                               <0 0 0 2 &gic 0 106 4>,
+                               <0 0 0 3 &gic 0 107 4>,
+                               <0 0 0 4 &gic 0 108 4>;
                interrupt-map-mask = <0 0 0 0x7>;
                num-lanes = <1>;
                num-viewport = <4>;
@@ -79,6 +80,25 @@ hsio_subsys: bus@5f000000 {
                status = "disabled";
        };
 
+       pcieb_ep: pcie-ep@5f010000 {
+               compatible = "fsl,imx8q-pcie-ep";
+               reg = <0x5f010000 0x00010000>,
+                     <0x80000000 0x10000000>;
+               reg-names = "dbi", "addr_space";
+               num-lanes = <1>;
+               interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "dma";
+               clocks = <&pcieb_lpcg IMX_LPCG_CLK_6>,
+                        <&pcieb_lpcg IMX_LPCG_CLK_4>,
+                        <&pcieb_lpcg IMX_LPCG_CLK_5>;
+               clock-names = "dbi", "mstr", "slv";
+               power-domains = <&pd IMX_SC_R_PCIE_B>;
+               fsl,max-link-speed = <3>;
+               num-ib-windows = <6>;
+               num-ob-windows = <6>;
+               status = "disabled";
+       };
+
        pcieb_lpcg: clock-controller@5f060000 {
                compatible = "fsl,imx8qxp-lpcg";
                reg = <0x5f060000 0x10000>;
index 6259186..5f3b401 100644 (file)
                enable-active-high;
        };
 
+       reg_audio_5v: regulator-audio-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       reg_audio_3v3: regulator-audio-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       reg_audio_1v8: regulator-audio-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        bt_sco_codec: audio-codec-bt {
                compatible = "linux,bt-sco";
                #sound-dai-cells = <1>;
                                wlf,shared-lrclk;
                                wlf,hp-cfg = <2 2 3>;
                                wlf,gpio-cfg = <1 3>;
+                               AVDD-supply = <&reg_audio_3v3>;
+                               DBVDD-supply = <&reg_audio_1v8>;
+                               DCVDD-supply = <&reg_audio_1v8>;
+                               SPKVDD1-supply = <&reg_audio_5v>;
+                               SPKVDD2-supply = <&reg_audio_5v>;
                        };
                };
 
                                wlf,shared-lrclk;
                                wlf,hp-cfg = <2 2 3>;
                                wlf,gpio-cfg = <1 3>;
+                               AVDD-supply = <&reg_audio_3v3>;
+                               DBVDD-supply = <&reg_audio_1v8>;
+                               DCVDD-supply = <&reg_audio_1v8>;
+                               SPKVDD1-supply = <&reg_audio_5v>;
+                               SPKVDD2-supply = <&reg_audio_5v>;
                        };
                };
 
                                wlf,shared-lrclk;
                                wlf,hp-cfg = <2 2 3>;
                                wlf,gpio-cfg = <1 3>;
+                               AVDD-supply = <&reg_audio_3v3>;
+                               DBVDD-supply = <&reg_audio_1v8>;
+                               DCVDD-supply = <&reg_audio_1v8>;
+                               SPKVDD1-supply = <&reg_audio_5v>;
+                               SPKVDD2-supply = <&reg_audio_5v>;
                        };
                };
 
index a8ef4fb..d16490d 100644 (file)
        status = "okay";
 };
 
+&reg_nvcc_sd {
+       sd-vsel-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
+};
+
 &uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart1>;
                        MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2             0x1d0
                        MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3             0x1d0
                        MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12                0x19
-                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0xd0
+                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0x40000d0
                >;
        };
 
                        MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2             0x1d4
                        MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3             0x1d4
                        MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12                0x19
-                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0xd0
+                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0x40000d0
                >;
        };
 
                        MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2             0x1d6
                        MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3             0x1d6
                        MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12                0x19
-                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0xd0
+                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0x40000d0
                >;
        };
 };
index 663ae52..d455429 100644 (file)
                                regulator-name = "NVCC_SD (LDO5)";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <3300000>;
+                               sd-vsel-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
                        };
                };
        };
                        MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2             0x1d0 /* SDIO_A_D2 */
                        MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3             0x1d0 /* SDIO_A_D3 */
                        MX8MM_IOMUXC_SD2_WP_USDHC2_WP                   0x400000d6 /* SDIO_A_WP */
-                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0x90
+                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0x40000090
                >;
        };
 
                        MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2             0x1d4 /* SDIO_A_D2 */
                        MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3             0x1d4 /* SDIO_A_D3 */
                        MX8MM_IOMUXC_SD2_WP_USDHC2_WP                   0x400000d6 /* SDIO_A_WP */
-                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0x90
+                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0x40000090
                >;
        };
 
                        MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2             0x1d6 /* SDIO_A_D2 */
                        MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3             0x1d6 /* SDIO_A_D3 */
                        MX8MM_IOMUXC_SD2_WP_USDHC2_WP                   0x400000d6 /* SDIO_A_WP */
-                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0x90
+                       MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT          0x40000090
                >;
        };
 
diff --git a/src/arm64/freescale/imx8mm-phyboard-polis-peb-av-10.dtso b/src/arm64/freescale/imx8mm-phyboard-polis-peb-av-10.dtso
new file mode 100644 (file)
index 0000000..840f832
--- /dev/null
@@ -0,0 +1,237 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Teresa Remmet <t.remmet@phytec.de>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/clock/imx8mm-clock.h>
+#include <dt-bindings/gpio/gpio.h>
+#include "imx8mm-pinfunc.h"
+
+&{/} {
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lcd>;
+               default-brightness-level = <6>;
+               pwms = <&pwm4 0 50000 0>;
+               power-supply = <&reg_vdd_3v3_s>;
+               enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+               brightness-levels= <0 4 8 16 32 64 128 255>;
+       };
+
+       panel {
+               compatible = "edt,etml1010g3dra";
+               backlight = <&backlight>;
+               power-supply = <&reg_vcc_3v3>;
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&bridge_out>;
+                       };
+               };
+       };
+
+       reg_sound_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_1V8_Audio";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       reg_sound_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_3V3_Analog";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       sound-peb-av-10 {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "snd-peb-av-10";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&dailink_master>;
+               simple-audio-card,frame-master = <&dailink_master>;
+               simple-audio-card,mclk-fs = <32>;
+               simple-audio-card,widgets =
+                       "Line", "Line In",
+                       "Speaker", "Speaker",
+                       "Microphone", "Microphone Jack",
+                       "Headphone", "Headphone Jack";
+               simple-audio-card,routing =
+                       "Speaker", "SPOP",
+                       "Speaker", "SPOM",
+                       "Headphone Jack", "HPLOUT",
+                       "Headphone Jack", "HPROUT",
+                       "LINE1L", "Line In",
+                       "LINE1R", "Line In",
+                       "MIC3R", "Microphone Jack",
+                       "Microphone Jack", "Mic Bias";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai5>;
+               };
+
+               dailink_master: simple-audio-card,codec {
+                       sound-dai = <&codec>;
+                       clocks = <&clk IMX8MM_CLK_SAI5>;
+               };
+       };
+};
+
+&i2c3 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c3>;
+       pinctrl-1 = <&pinctrl_i2c3_gpio>;
+       sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       codec: codec@18 {
+               compatible = "ti,tlv320aic3007";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_tlv320>;
+               #sound-dai-cells = <0>;
+               reg = <0x18>;
+               reset-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
+               ai3x-gpio-func = <0xd 0x0>;
+               ai3x-micbias-vg = <2>;
+               AVDD-supply = <&reg_sound_3v3>;
+               IOVDD-supply = <&reg_sound_3v3>;
+               DRVDD-supply = <&reg_sound_3v3>;
+               DVDD-supply = <&reg_sound_1v8>;
+       };
+
+       eeprom@57 {
+               compatible = "atmel,24c32";
+               pagesize = <32>;
+               reg = <0x57>;
+               vcc-supply = <&reg_vdd_3v3_s>;
+       };
+
+       eeprom@5f {
+               compatible = "atmel,24c32";
+               pagesize = <32>;
+               reg = <0x5f>;
+               size = <32>;
+               vcc-supply = <&reg_vdd_3v3_s>;
+       };
+};
+
+&lcdif {
+       status = "okay";
+};
+
+&mipi_dsi {
+       samsung,esc-clock-frequency = <10000000>;
+       status = "okay";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               port@1 {
+                       reg = <1>;
+                       dsi_out: endpoint {
+                               remote-endpoint = <&bridge_in>;
+                       };
+               };
+       };
+};
+
+&pwm4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm4>;
+       status = "okay";
+};
+
+&sai5 {
+       assigned-clocks = <&clk IMX8MM_CLK_SAI5>;
+       assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL2_OUT>;
+       assigned-clock-rates = <11289600>;
+       clocks = <&clk IMX8MM_CLK_SAI5_IPG>, <&clk IMX8MM_CLK_DUMMY>,
+               <&clk IMX8MM_CLK_SAI5_ROOT>, <&clk IMX8MM_CLK_DUMMY>,
+               <&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_AUDIO_PLL1_OUT>,
+               <&clk IMX8MM_AUDIO_PLL2_OUT>;
+       clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k",
+                       "pll11k";
+       fsl,sai-mclk-direction-output;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai5>;
+       #sound-dai-cells = <0>;
+       status = "okay";
+};
+
+&sn65dsi83 {
+       status = "okay";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+                       bridge_in: endpoint {
+                               remote-endpoint = <&dsi_out>;
+                               data-lanes = <1 2 3 4>;
+                       };
+               };
+
+               port@2 {
+                       reg = <2>;
+                       bridge_out: endpoint {
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
+       };
+};
+
+&iomuxc {
+
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL          0x400001c2
+                       MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA          0x400001c2
+               >;
+       };
+
+       pinctrl_i2c3_gpio: i2c3gpiogrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_I2C3_SCL_GPIO5_IO18        0x1e2
+                       MX8MM_IOMUXC_I2C3_SDA_GPIO5_IO19        0x1e2
+               >;
+       };
+       pinctrl_lcd: lcd0grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI3_TXD_GPIO5_IO1         0x12
+               >;
+       };
+
+       pinctrl_pwm4: pwm4grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI3_MCLK_PWM4_OUT         0x12
+               >;
+       };
+
+       pinctrl_sai5: sai5grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI5_MCLK_SAI5_MCLK        0xd6
+                       MX8MM_IOMUXC_SAI5_RXD0_SAI5_RX_DATA0    0xd6
+                       MX8MM_IOMUXC_SAI5_RXD1_SAI5_TX_SYNC     0xd6
+                       MX8MM_IOMUXC_SAI5_RXD2_SAI5_TX_BCLK     0xd6
+                       MX8MM_IOMUXC_SAI5_RXD3_SAI5_TX_DATA0    0xd6
+               >;
+       };
+
+       pinctrl_tlv320: tlv320grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28       0x16
+                       MX8MM_IOMUXC_SAI5_RXC_GPIO3_IO20        0x16
+               >;
+       };
+};
diff --git a/src/arm64/freescale/imx8mm-phyboard-polis-peb-eval-01.dtso b/src/arm64/freescale/imx8mm-phyboard-polis-peb-eval-01.dtso
new file mode 100644 (file)
index 0000000..a28f51e
--- /dev/null
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Janine Hagemann <j.hagemann@phytec.de>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/linux-event-codes.h>
+#include "imx8mm-pinfunc.h"
+
+&{/} {
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_keys>;
+
+               button-0 {
+                       label = "home";
+                       linux,code = <KEY_HOME>;
+                       gpios = <&gpio4 17 GPIO_ACTIVE_LOW>;
+                       wakeup-source;
+               };
+
+               button-1 {
+                       label = "menu";
+                       linux,code = <KEY_MENU>;
+                       gpios = <&gpio5 29 GPIO_ACTIVE_LOW>;
+                       wakeup-source;
+               };
+       };
+
+       user-leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_user_leds>;
+
+               user-led1 {
+                       gpios = <&gpio4 14 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+
+               user-led2 {
+                       gpios = <&gpio4 15 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+
+               user-led3 {
+                       gpios = <&gpio5 28 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+};
+
+&iomuxc {
+       pinctrl_gpio_keys: gpio_keysgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI1_TXD5_GPIO4_IO17       0x16
+                       MX8MM_IOMUXC_UART4_TXD_GPIO5_IO29       0x16
+               >;
+       };
+
+       pinctrl_user_leds: user_ledsgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI1_TXD3_GPIO4_IO15       0x16
+                       MX8MM_IOMUXC_UART4_RXD_GPIO5_IO28       0x16
+                       MX8MM_IOMUXC_SAI1_TXD2_GPIO4_IO14       0x16
+               >;
+       };
+};
index 5eacbd9..be470cf 100644 (file)
        status = "okay";
 };
 
+/* RTC */
 &rv3028 {
+       interrupt-parent = <&gpio1>;
+       interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+       pinctrl-0 = <&pinctrl_rtc>;
+       pinctrl-names = "default";
        aux-voltage-chargeable = <1>;
        trickle-resistor-ohms = <3000>;
+       wakeup-source;
 };
 
 &snvs_pwrkey {
                device-wakeup-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>;
                interrupt-names = "host-wakeup";
                interrupt-parent = <&gpio2>;
-               interrupts = <9 IRQ_TYPE_EDGE_BOTH>;
+               interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
                max-speed = <2000000>;
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_bt>;
                shutdown-gpios = <&gpio2 6 GPIO_ACTIVE_HIGH>;
+               vbat-supply = <&reg_vcc_3v3>;
                vddio-supply = <&reg_vcc_3v3>;
        };
 };
                fsl,pins = <
                        MX8MM_IOMUXC_SD1_DATA4_GPIO2_IO6        0x00
                        MX8MM_IOMUXC_SD1_DATA6_GPIO2_IO8        0x00
-                       MX8MM_IOMUXC_SD1_DATA7_GPIO2_IO9        0x00
+                       MX8MM_IOMUXC_SD1_DATA7_GPIO2_IO9        0x140
                >;
        };
 
                >;
        };
 
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3               0x1c0
+               >;
+       };
+
        pinctrl_tpm: tpmgrp {
                fsl,pins = <
                        MX8MM_IOMUXC_SD1_STROBE_GPIO2_IO11      0x140
diff --git a/src/arm64/freescale/imx8mm-phycore-no-eth.dtso b/src/arm64/freescale/imx8mm-phycore-no-eth.dtso
new file mode 100644 (file)
index 0000000..0fb4b6d
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Teresa Remmet <t.remmet@phytec.de>
+ */
+
+/dts-v1/;
+/plugin/;
+
+&ethphy0 {
+       status = "disabled";
+};
diff --git a/src/arm64/freescale/imx8mm-phycore-no-spiflash.dtso b/src/arm64/freescale/imx8mm-phycore-no-spiflash.dtso
new file mode 100644 (file)
index 0000000..7bfc366
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Teresa Remmet <t.remmet@phytec.de>
+ */
+
+/dts-v1/;
+/plugin/;
+
+&flexspi {
+       status = "disabled";
+};
+
+&som_flash {
+       status = "disabled";
+};
diff --git a/src/arm64/freescale/imx8mm-phycore-rpmsg.dtso b/src/arm64/freescale/imx8mm-phycore-rpmsg.dtso
new file mode 100644 (file)
index 0000000..43d5905
--- /dev/null
@@ -0,0 +1,58 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Dominik Haller <d.haller@phytec.de>
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/clock/imx8mm-clock.h>
+
+&{/} {
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               m4_reserved: m4@80000000 {
+                       reg = <0 0x80000000 0 0x1000000>;
+                       no-map;
+               };
+
+               vdev0vring0: vdev0vring0@b8000000 {
+                       reg = <0 0xb8000000 0 0x8000>;
+                       no-map;
+               };
+
+               vdev0vring1: vdev0vring1@b8008000 {
+                       reg = <0 0xb8008000 0 0x8000>;
+                       no-map;
+               };
+
+               rsc_table: rsc_table@b80ff000 {
+                       reg = <0 0xb80ff000 0 0x1000>;
+                       no-map;
+               };
+
+               vdevbuffer: vdevbuffer@b8400000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0xb8400000 0 0x100000>;
+                       no-map;
+               };
+       };
+
+       core-m4 {
+               compatible = "fsl,imx8mm-cm4";
+               clocks = <&clk IMX8MM_CLK_M4_DIV>;
+               mboxes = <&mu 0 1
+                       &mu 1 1
+                       &mu 3 1>;
+               mbox-names = "tx", "rx", "rxdb";
+               memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>, <&rsc_table>;
+               syscon = <&src>;
+       };
+};
index 6069678..672baba 100644 (file)
@@ -69,7 +69,6 @@
 
 /* Ethernet */
 &fec1 {
-       fsl,magic-packet;
        phy-mode = "rgmii-id";
        phy-handle = <&ethphy0>;
        pinctrl-names = "default";
                                regulator-always-on;
                                regulator-boot-on;
                                regulator-max-microvolt = <2500000>;
-                               regulator-min-microvolt = <1500000>;
+                               regulator-min-microvolt = <2500000>;
                                regulator-name = "VCC_ENET_2V5 (LDO3)";
 
                                regulator-state-mem {
-                                       regulator-off-in-suspend;
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-max-microvolt = <2500000>;
+                                       regulator-suspend-min-microvolt = <2500000>;
                                };
                        };
 
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_sn65dsi83>;
                reg = <0x2d>;
+               vcc-supply = <&reg_vdd_1v8>;
                status = "disabled";
        };
 
+       /* EEPROM */
        eeprom@51 {
                compatible = "atmel,24c32";
                pagesize = <32>;
                vcc-supply = <&reg_vdd_3v3_s>;
        };
 
+       /* RTC */
        rv3028: rtc@52 {
                compatible = "microcrystal,rv3028";
-               interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
-               interrupt-parent = <&gpio1>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_rtc>;
                reg = <0x52>;
        };
 };
 
-/* EMMC */
+/* eMMC */
 &usdhc3 {
        assigned-clocks = <&clk IMX8MM_CLK_USDHC3_ROOT>;
        assigned-clock-rates = <400000000>;
                >;
        };
 
-       pinctrl_rtc: rtcgrp {
-               fsl,pins = <
-                       MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3               0x1c0
-               >;
-       };
-
        pinctrl_sn65dsi83: sn65dsi83grp {
                fsl,pins = <
                        MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10              0x0
index c3835b2..755cf9c 100644 (file)
 
 /* RTC */
 &rv3028 {
+       interrupt-parent = <&gpio1>;
+       interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+       pinctrl-0 = <&pinctrl_rtc>;
+       pinctrl-names = "default";
        aux-voltage-chargeable = <1>;
        trickle-resistor-ohms = <3000>;
+       wakeup-source;
 };
 
 &uart1 {
                >;
        };
 
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3               0x1c0
+               >;
+       };
+
        pinctrl_tempsense: tempsensegrp {
                fsl,pins = <
                        MX8MM_IOMUXC_SAI3_TXFS_GPIO4_IO31       0x00
index 8f58c84..b82e979 100644 (file)
@@ -65,6 +65,7 @@
                spi-max-frequency = <84000000>;
                spi-tx-bus-width = <1>;
                spi-rx-bus-width = <4>;
+               vcc-supply = <&buck5_reg>;
 
                partitions {
                        compatible = "fixed-partitions";
index c528594..b46566f 100644 (file)
                rtc1 = &snvs_rtc;
        };
 
-       backlight: backlight {
-               compatible = "pwm-backlight";
-               brightness-levels = <0 45 63 88 119 158 203 255>;
-               default-brightness-level = <4>;
-               /* Verdin I2S_2_D_OUT (DSI_1_BKL_EN/DSI_1_BKL_EN_LVDS, SODIMM 46) */
-               enable-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_i2s_2_d_out_dsi_1_bkl_en>;
-               power-supply = <&reg_3p3v>;
-               /* Verdin PWM_3_DSI/PWM_3_DSI_LVDS (SODIMM 19) */
-               pwms = <&pwm1 0 6666667 PWM_POLARITY_INVERTED>;
-               status = "disabled";
-       };
-
        /* Fixed clock dedicated to SPI CAN controller */
        clk40m: oscillator {
                compatible = "fixed-clock";
                status = "disabled";
        };
 
-       panel_lvds: panel-lvds {
-               compatible = "panel-lvds";
-               backlight = <&backlight>;
-               data-mapping = "vesa-24";
-               status = "disabled";
-       };
-
        /* Carrier Board Supplies */
        reg_1p8v: regulator-1p8v {
                compatible = "regulator-fixed";
                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_nvcc_sd>;
+       };
+
        reserved-memory {
                #address-cells = <2>;
                #size-cells = <2>;
                          "SODIMM_19",
                          "",
                          "",
-                         "",
+                         "PMIC_USDHC_VSELECT",
                          "",
                          "",
                          "",
        pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_cd>;
        pinctrl-3 = <&pinctrl_usdhc2_sleep>, <&pinctrl_usdhc2_cd_sleep>;
        vmmc-supply = <&reg_usdhc2_vmmc>;
+       vqmmc-supply = <&reg_usdhc2_vqmmc>;
 };
 
 &wdog1 {
                        <MX8MM_IOMUXC_NAND_CLE_GPIO3_IO5                0x6>;   /* SODIMM 76 */
        };
 
+       pinctrl_usdhc2_vsel: usdhc2vselgrp {
+               fsl,pins =
+                       <MX8MM_IOMUXC_GPIO1_IO04_GPIO1_IO4      0x10>; /* PMIC_USDHC_VSELECT */
+       };
+
        /*
         * Note: Due to ERR050080 we use discrete external on-module resistors pulling-up to the
         * on-module +V3.3_1.8_SD (LDO5) rail and explicitly disable the internal pull-ups here.
         */
        pinctrl_usdhc2: usdhc2grp {
                fsl,pins =
-                       <MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT         0x10>,
                        <MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK                0x90>,  /* SODIMM 78 */
                        <MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD                0x90>,  /* SODIMM 74 */
                        <MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0            0x90>,  /* SODIMM 80 */
 
        pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
                fsl,pins =
-                       <MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT         0x10>,
                        <MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK                0x94>,
                        <MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD                0x94>,
                        <MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0            0x94>,
 
        pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
                fsl,pins =
-                       <MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT         0x10>,
                        <MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK                0x96>,
                        <MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD                0x96>,
                        <MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0            0x96>,
        /* Avoid backfeeding with removed card power */
        pinctrl_usdhc2_sleep: usdhc2slpgrp {
                fsl,pins =
-                       <MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT         0x0>,
                        <MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK                0x0>,
                        <MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD                0x0>,
                        <MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0            0x0>,
index c6ad65b..475cbf9 100644 (file)
@@ -64,7 +64,6 @@
                DVDD-supply = <&buck5_reg>;
                reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
                ai31xx-micbias-vg = <MICBIAS_AVDDV>;
-               clocks = <&clk IMX8MN_CLK_SAI3_ROOT>;
        };
 };
 
index e68a3fd..640c41b 100644 (file)
@@ -63,6 +63,7 @@
                spi-max-frequency = <84000000>;
                spi-tx-bus-width = <1>;
                spi-rx-bus-width = <4>;
+               vcc-supply = <&buck5_reg>;
 
                partitions {
                        compatible = "fixed-partitions";
index 68e12a7..c26954e 100644 (file)
                clock-frequency = <100000000>;
        };
 
+       reg_audio_3v3: regulator-audio-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       reg_audio_1v8: regulator-audio-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        reg_audio_pwr: regulator-audio-pwr {
                compatible = "regulator-fixed";
                pinctrl-names = "default";
                wlf,shared-lrclk;
                wlf,hp-cfg = <3 2 3>;
                wlf,gpio-cfg = <1 3>;
+               AVDD-supply = <&reg_audio_3v3>;
+               DBVDD-supply = <&reg_audio_1v8>;
+               DCVDD-supply = <&reg_audio_1v8>;
                SPKVDD1-supply = <&reg_audio_pwr>;
+               SPKVDD2-supply = <&reg_audio_pwr>;
        };
 
        pca6416: gpio@20 {
index e0e9f6f..b97bfeb 100644 (file)
                                regulator-name = "NVCC_SD (LDO5)";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <3300000>;
+                               sd-vsel-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
                        };
                };
        };
                        MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1            0x1d0 /* SDIO_A_D1 */
                        MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2            0x1d0 /* SDIO_A_D2 */
                        MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3            0x1d0 /* SDIO_A_D3 */
-                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT         0x1d0
+                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT         0x400001d0
                >;
        };
 
                        MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1            0x1d4 /* SDIO_A_D1 */
                        MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2            0x1d4 /* SDIO_A_D2 */
                        MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3            0x1d4 /* SDIO_A_D3 */
-                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT         0x1d0
+                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT         0x400001d0
                >;
        };
 
                        MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1            0x1d6 /* SDIO_A_D1 */
                        MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2            0x1d6 /* SDIO_A_D2 */
                        MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3            0x1d6 /* SDIO_A_D3 */
-                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT         0x1d0
+                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT         0x400001d0
                >;
        };
 
diff --git a/src/arm64/freescale/imx8mp-nominal.dtsi b/src/arm64/freescale/imx8mp-nominal.dtsi
new file mode 100644 (file)
index 0000000..2ce1860
--- /dev/null
@@ -0,0 +1,92 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2024 Pengutronix, Ahmad Fatoum <kernel@pengutronix.de>
+ */
+
+&clk {
+       assigned-clocks = <&clk IMX8MP_CLK_A53_SRC>,
+                         <&clk IMX8MP_CLK_A53_CORE>,
+                         <&clk IMX8MP_SYS_PLL3>,
+                         <&clk IMX8MP_CLK_NOC>,
+                         <&clk IMX8MP_CLK_NOC_IO>,
+                         <&clk IMX8MP_CLK_GIC>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
+                                <&clk IMX8MP_ARM_PLL_OUT>,
+                                <0>,
+                                <&clk IMX8MP_SYS_PLL1_800M>,
+                                <&clk IMX8MP_SYS_PLL3_OUT>,
+                                <&clk IMX8MP_SYS_PLL1_800M>;
+       assigned-clock-rates = <0>, <0>,
+                              <600000000>,
+                              <800000000>,
+                              <600000000>,
+                              <400000000>;
+       fsl,operating-mode = "nominal";
+};
+
+&gpu2d {
+       assigned-clocks = <&clk IMX8MP_CLK_GPU2D_CORE>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>;
+       assigned-clock-rates = <800000000>;
+};
+
+&gpu3d {
+       assigned-clocks = <&clk IMX8MP_CLK_GPU3D_CORE>,
+                         <&clk IMX8MP_CLK_GPU3D_SHADER_CORE>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
+                                <&clk IMX8MP_SYS_PLL1_800M>;
+       assigned-clock-rates = <800000000>, <800000000>;
+};
+
+&pgc_hdmimix {
+       assigned-clocks = <&clk IMX8MP_CLK_HDMI_AXI>,
+                         <&clk IMX8MP_CLK_HDMI_APB>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
+                                <&clk IMX8MP_SYS_PLL1_133M>;
+       assigned-clock-rates = <400000000>, <133000000>;
+};
+
+&pgc_hsiomix {
+       assigned-clocks = <&clk IMX8MP_CLK_HSIO_AXI>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>;
+       assigned-clock-rates = <400000000>;
+};
+
+&pgc_gpumix {
+       assigned-clocks = <&clk IMX8MP_CLK_GPU_AXI>,
+                         <&clk IMX8MP_CLK_GPU_AHB>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL3_OUT>,
+                                <&clk IMX8MP_SYS_PLL3_OUT>;
+       assigned-clock-rates = <600000000>, <300000000>;
+};
+
+&pgc_mlmix {
+       assigned-clocks = <&clk IMX8MP_CLK_ML_CORE>,
+                         <&clk IMX8MP_CLK_ML_AXI>,
+                         <&clk IMX8MP_CLK_ML_AHB>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
+                                <&clk IMX8MP_SYS_PLL1_800M>,
+                                <&clk IMX8MP_SYS_PLL1_800M>;
+       assigned-clock-rates = <800000000>,
+                              <800000000>,
+                              <300000000>;
+};
+
+&media_blk_ctrl {
+       assigned-clocks = <&clk IMX8MP_CLK_MEDIA_AXI>,
+                         <&clk IMX8MP_CLK_MEDIA_APB>,
+                         <&clk IMX8MP_CLK_MEDIA_DISP1_PIX>,
+                         <&clk IMX8MP_CLK_MEDIA_DISP2_PIX>,
+                         <&clk IMX8MP_CLK_MEDIA_ISP>,
+                         <&clk IMX8MP_VIDEO_PLL1>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
+                                <&clk IMX8MP_SYS_PLL1_800M>,
+                                <&clk IMX8MP_VIDEO_PLL1_OUT>,
+                                <&clk IMX8MP_VIDEO_PLL1_OUT>,
+                                <&clk IMX8MP_SYS_PLL1_800M>;
+       assigned-clock-rates = <400000000>, <200000000>,
+                              <0>, <0>, <400000000>,
+                              <1039500000>;
+};
+
+/delete-node/ &{noc_opp_table/opp-1000000000};
diff --git a/src/arm64/freescale/imx8mp-skov-basic.dts b/src/arm64/freescale/imx8mp-skov-basic.dts
new file mode 100644 (file)
index 0000000..5a2629f
--- /dev/null
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+
+#include "imx8mp-skov-reva.dtsi"
+
+/ {
+       model = "SKOV IMX8MP CPU basic/fallback";
+       compatible = "skov,imx8mp-skov-basic", "fsl,imx8mp";
+};
index 59813ef..020f20c 100644 (file)
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
 
 #include "imx8mp.dtsi"
+#include "imx8mp-nominal.dtsi"
 
 #include <dt-bindings/leds/common.h>
 
                regulator-name = "24V";
                regulator-min-microvolt = <24000000>;
                regulator-max-microvolt = <24000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg24v>;
+               interrupts-extended = <&gpio4 23 IRQ_TYPE_EDGE_FALLING>;
+               system-critical-regulator;
+               regulator-uv-less-critical-window-ms = <50>;
        };
 
        reg_can2rs: regulator-can2rs {
        };
 };
 
+/*
+ * Board is passively cooled and heatsink is specced for continuous operation
+ * at 1.2 GHz only. Short bouts of 1.6 GHz are ok, but these should be done
+ * intentionally, not as part of suspend/resume cycles.
+ */
+&{/opp-table/opp-1600000000} {
+       /delete-property/ opp-suspend;
+};
+
+&{/opp-table/opp-1800000000} {
+       /delete-property/ opp-suspend;
+};
+
 &A53_0 {
        cpu-supply = <&reg_vdd_arm>;
 };
 &eqos {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_eqos>;
-       phy-mode = "rgmii-txid";
+       phy-mode = "rgmii-rxid";
        status = "okay";
 
        fixed-link {
 
 &i2c1 {
        clock-frequency = <100000>;
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        status = "okay";
 
        pmic@25 {
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_pmic>;
                interrupts-extended = <&gpio1 3 IRQ_TYPE_EDGE_RISING>;
-               sd-vsel-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
 
                regulators {
                        reg_vdd_soc: BUCK1 {
                                regulator-name = "VDD_SOC";
-                               regulator-min-microvolt = <600000>;
-                               regulator-max-microvolt = <2187500>;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
                                vin-supply = <&reg_5v_p>;
                                regulator-boot-on;
                                regulator-always-on;
 
                        reg_vdd_arm: BUCK2 {
                                regulator-name = "VDD_ARM";
-                               regulator-min-microvolt = <600000>;
-                               regulator-max-microvolt = <2187500>;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <1000000>;
                                vin-supply = <&reg_5v_p>;
                                regulator-boot-on;
                                regulator-always-on;
                                regulator-ramp-delay = <3125>;
-                               nxp,dvs-run-voltage = <950000>;
+                               nxp,dvs-run-voltage = <850000>;
                                nxp,dvs-standby-voltage = <850000>;
                        };
 
                        reg_vdd_3v3: BUCK4 {
                                regulator-name = "VDD_3V3";
-                               regulator-min-microvolt = <600000>;
-                               regulator-max-microvolt = <3400000>;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
                                vin-supply = <&reg_5v_p>;
                                regulator-boot-on;
                                regulator-always-on;
 
                        reg_vdd_1v8: BUCK5 {
                                regulator-name = "VDD_1V8";
-                               regulator-min-microvolt = <600000>;
-                               regulator-max-microvolt = <3400000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
                                vin-supply = <&reg_5v_p>;
                                regulator-boot-on;
                                regulator-always-on;
 
                        reg_nvcc_dram_1v1: BUCK6 {
                                regulator-name = "NVCC_DRAM_1V1";
-                               regulator-min-microvolt = <600000>;
-                               regulator-max-microvolt = <3400000>;
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
                                vin-supply = <&reg_5v_p>;
                                regulator-boot-on;
                                regulator-always-on;
 
                        reg_nvcc_snvs_1v8: LDO1 {
                                regulator-name = "NVCC_SNVS_1V8";
-                               regulator-min-microvolt = <1600000>;
-                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
                                vin-supply = <&reg_5v_p>;
                                regulator-boot-on;
                                regulator-always-on;
 
                        reg_vdda_1v8: LDO3 {
                                regulator-name = "VDDA_1V8";
-                               regulator-min-microvolt = <800000>;
-                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
                                vin-supply = <&reg_5v_p>;
                                regulator-boot-on;
                                regulator-always-on;
        };
 };
 
+&i2c2 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       pinctrl-1 = <&pinctrl_i2c2_gpio>;
+       scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+};
+
 &i2c3 {
-       clock-frequency = <100000>;
-       pinctrl-names = "default";
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c3>;
+       pinctrl-1 = <&pinctrl_i2c3_gpio>;
+       scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        status = "okay";
 
        i2c_rtc: rtc@51 {
 
 &i2c4 {
        clock-frequency = <380000>;
-       pinctrl-names = "default";
+       pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c4>;
+       pinctrl-1 = <&pinctrl_i2c4_gpio>;
+       scl-gpios = <&gpio5 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        status = "okay";
 
        switch: switch@5f {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart1>;
        status = "okay";
+       /*
+        * While there is no CTS line, the property "uart-has-rtscts" is still
+        * the right thing to do to enable the UART to do RS485. In RS485-Mode
+        * CTS isn't used anyhow and there is no dedicated property
+        * "uart-has-rts-but-no-cts".
+        */
+       uart-has-rtscts;
 };
 
 &uart2 {
                >;
        };
 
+       pinctrl_i2c1_gpio: i2c1gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C1_SCL__GPIO5_IO14                       0x400001c2
+                       MX8MP_IOMUXC_I2C1_SDA__GPIO5_IO15                       0x400001c2
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C2_SCL__I2C2_SCL                         0x400001c2
+                       MX8MP_IOMUXC_I2C2_SDA__I2C2_SDA                         0x400001c2
+               >;
+       };
+
+       pinctrl_i2c2_gpio: i2c2gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C2_SCL__GPIO5_IO16                       0x400001c2
+                       MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17                       0x400001c2
+               >;
+       };
+
        pinctrl_i2c3: i2c3grp {
                fsl,pins = <
                        MX8MP_IOMUXC_I2C3_SCL__I2C3_SCL                         0x400001c2
                >;
        };
 
+       pinctrl_i2c3_gpio: i2c3gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C3_SCL__GPIO5_IO18                       0x400001c2
+                       MX8MP_IOMUXC_I2C3_SDA__GPIO5_IO19                       0x400001c2
+               >;
+       };
+
        pinctrl_i2c4: i2c4grp {
                fsl,pins = <
                        MX8MP_IOMUXC_I2C4_SCL__I2C4_SCL                         0x400001c3
                >;
        };
 
+       pinctrl_i2c4_gpio: i2c4gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C4_SCL__GPIO5_IO20                       0x400001c3
+                       MX8MP_IOMUXC_I2C4_SDA__GPIO5_IO21                       0x400001c3
+               >;
+       };
+
        pinctrl_pmic: pmicirqgrp {
                fsl,pins = <
                        MX8MP_IOMUXC_GPIO1_IO03__GPIO1_IO03                     0x41
-                       MX8MP_IOMUXC_GPIO1_IO04__GPIO1_IO04                     0x41
                >;
        };
 
                >;
        };
 
+       pinctrl_reg24v: reg24vgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI2_RXD0__GPIO4_IO23                      0x154
+               >;
+       };
+
        pinctrl_reg_vsd_3v3: regvsd3v3grp {
                fsl,pins = <
                        MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19    0x40
                        MX8MP_IOMUXC_UART1_RXD__UART1_DCE_RX                    0x140
                        MX8MP_IOMUXC_UART1_TXD__UART1_DCE_TX                    0x140
                        MX8MP_IOMUXC_UART3_RXD__UART1_DTE_RTS                   0x140
+                       /* CTS pin is not connected, but needed as workaround */
+                       MX8MP_IOMUXC_UART3_TXD__UART1_DTE_CTS                   0x140
                >;
        };
 
                        MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1                    0x1d0
                        MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2                    0x1d0
                        MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3                    0x1d0
+                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT                 0xc0
                >;
        };
 
                        MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1                    0x1d4
                        MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2                    0x1d4
                        MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3                    0x1d4
+                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT                 0xc0
                >;
        };
 
                        MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1                    0x1d6
                        MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2                    0x1d6
                        MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3                    0x1d6
+                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT                 0xc0
                >;
        };
 
index c1ca69d..32a4294 100644 (file)
@@ -9,12 +9,53 @@
        compatible = "skov,imx8mp-skov-revb-hdmi", "fsl,imx8mp";
 };
 
+&hdmi_pvi {
+       status = "okay";
+};
+
+&hdmi_tx {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hdmi>;
+       ddc-i2c-bus = <&i2c5>;
+       status = "okay";
+};
+
+&hdmi_tx_phy {
+       status = "okay";
+};
+
+&i2c5 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c5>;
+       pinctrl-1 = <&pinctrl_i2c5_gpio>;
+       scl-gpios = <&gpio3 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio3 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       clock-frequency = <100000>;
+       status = "okay";
+};
+
+&lcdif3 {
+       status = "okay";
+};
+
 &iomuxc {
        pinctrl_hdmi: hdmigrp {
                fsl,pins = <
-                       MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_HDMI_SCL             0x1c3
-                       MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_HDMI_SDA             0x1c3
                        MX8MP_IOMUXC_HDMI_HPD__HDMIMIX_HDMI_HPD                 0x19
                >;
        };
+
+       pinctrl_i2c5: i2c5grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_HDMI_DDC_SCL__I2C5_SCL                     0x400001c2
+                       MX8MP_IOMUXC_HDMI_DDC_SDA__I2C5_SDA                     0x400001c2
+               >;
+       };
+
+       pinctrl_i2c5_gpio: i2c5gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_HDMI_DDC_SCL__GPIO3_IO26                   0x400001c2
+                       MX8MP_IOMUXC_HDMI_DDC_SDA__GPIO3_IO27                   0x400001c2
+               >;
+       };
 };
index ccbd3ab..baecf76 100644 (file)
@@ -8,6 +8,45 @@
        model = "SKOV IMX8MP CPU revB - LT6";
        compatible = "skov,imx8mp-skov-revb-lt6", "fsl,imx8mp";
 
+       lvds-decoder {
+               compatible = "ti,sn65lvds822", "lvds-decoder";
+               power-supply = <&reg_3v3>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               in_lvds1: endpoint {
+                                       data-mapping = "vesa-24";
+                                       remote-endpoint = <&ldb_lvds_ch1>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               lvds_decoder_out: endpoint {
+                                       remote-endpoint = <&panel_in>;
+                               };
+                       };
+               };
+       };
+
+       panel {
+               compatible = "logictechno,lttd800480070-l6wh-rt";
+               backlight = <&backlight>;
+               power-supply = <&reg_tft_vcom>;
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&lvds_decoder_out>;
+                       };
+               };
+       };
+
        touchscreen {
                compatible = "resistive-adc-touch";
                io-channels = <&adc_ts 1>, <&adc_ts 3>, <&adc_ts 4>, <&adc_ts 5>;
        };
 };
 
+&lcdif2 {
+       status = "okay";
+};
+
+&lvds_bridge {
+       assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>,
+                                <&clk IMX8MP_VIDEO_PLL1>;
+       assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
+       /* IMX8MP_VIDEO_PLL1 = IMX8MP_CLK_MEDIA_DISP2_PIX * 2 * 7 */
+       assigned-clock-rates = <0>, <462000000>;
+       status = "okay";
+
+       ports {
+               port@2 {
+                       ldb_lvds_ch1: endpoint {
+                               remote-endpoint = <&in_lvds1>;
+                       };
+               };
+       };
+};
+
 &pwm1 {
        status = "okay";
 };
index 2c75da5..45c9a6d 100644 (file)
@@ -27,8 +27,6 @@
 
 &i2c2 {
        clock-frequency = <100000>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_i2c2>;
        status = "okay";
 
        touchscreen@38 {
 };
 
 &lvds_bridge {
-       /* IMX8MP_CLK_MEDIA_LDB = IMX8MP_CLK_MEDIA_DISP2_PIX * 7 */
-       assigned-clock-rates = <490000000>;
+       assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>,
+                                <&clk IMX8MP_VIDEO_PLL1>;
+       assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
+       /* IMX8MP_VIDEO_PLL1 = IMX8MP_CLK_MEDIA_DISP2_PIX * 2 * 7 */
+       assigned-clock-rates = <0>, <980000000>;
        status = "okay";
 
        ports {
        };
 };
 
-&media_blk_ctrl {
-       /* currently it is not possible to let display clocks confugure
-        * automatically, so we need to set them manually
-        */
-       assigned-clock-rates = <500000000>, <200000000>, <0>,
-               /* IMX8MP_CLK_MEDIA_DISP2_PIX = pixelclk of lvds panel */
-               <70000000>,
-               <500000000>,
-               /* IMX8MP_VIDEO_PLL1 = IMX8MP_CLK_MEDIA_LDB */
-               <490000000>;
-};
-
 &pwm4 {
        status = "okay";
 };
        voltage-table = <3160000 73>;
        status = "okay";
 };
-
-&iomuxc {
-       pinctrl_i2c2: i2c2grp {
-               fsl,pins = <
-                       MX8MP_IOMUXC_I2C2_SCL__I2C2_SCL                         0x400001c2
-                       MX8MP_IOMUXC_I2C2_SDA__I2C2_SDA                         0x400001c2
-               >;
-       };
-};
diff --git a/src/arm64/freescale/imx8mp-skov-revc-bd500.dts b/src/arm64/freescale/imx8mp-skov-revc-bd500.dts
new file mode 100644 (file)
index 0000000..b816c6c
--- /dev/null
@@ -0,0 +1,91 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+
+#include "imx8mp-skov-reva.dtsi"
+
+/ {
+       model = "SKOV IMX8MP CPU revC - bd500";
+       compatible = "skov,imx8mp-skov-revc-bd500", "fsl,imx8mp";
+
+       leds {
+               led_system_red: led-3 {
+                       label = "bd500:system:red";
+                       color = <LED_COLOR_ID_RED>;
+                       /* Inverted compared to others due to NMOS inverter */
+                       gpios = <&gpioexp 3 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+
+               led_system_green: led-4 {
+                       label = "bd500:system:green";
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&gpioexp 2 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+               };
+
+               led_lan1_red: led-5 {
+                       label = "bd500:lan1:act";
+                       color = <LED_COLOR_ID_RED>;
+                       linux,default-trigger = "netdev";
+                       gpios = <&gpioexp 1 GPIO_ACTIVE_LOW>;
+               };
+
+               led_lan1_green: led-6 {
+                       label = "bd500:lan1:link";
+                       color = <LED_COLOR_ID_GREEN>;
+                       linux,default-trigger = "netdev";
+                       gpios = <&gpioexp 0 GPIO_ACTIVE_LOW>;
+               };
+
+               led_lan2_red: led-7 {
+                       label = "bd500:lan2:act";
+                       color = <LED_COLOR_ID_RED>;
+                       linux,default-trigger = "netdev";
+                       gpios = <&gpioexp 6 GPIO_ACTIVE_LOW>;
+               };
+
+               led_lan2_green: led-8 {
+                       label = "bd500:lan2:link";
+                       color = <LED_COLOR_ID_GREEN>;
+                       linux,default-trigger = "netdev";
+                       gpios = <&gpioexp 7 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               button-1 {
+                       label = "S1";
+                       linux,code = <KEY_CONFIG>;
+                       gpios = <&gpioexp 5 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       status = "okay";
+
+       gpioexp: gpio@20 {
+               compatible = "nxp,pca6408";
+               reg = <0x20>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_exp>;
+               interrupts-extended = <&gpio4 28 IRQ_TYPE_EDGE_FALLING>;
+               reset-gpios = <&gpio4 29 GPIO_ACTIVE_LOW>;
+               vcc-supply = <&reg_vdd_3v3>;
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+};
+
+&iomuxc {
+       pinctrl_gpio_exp: gpioexpgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI3_RXFS__GPIO4_IO28      0x0
+                       MX8MP_IOMUXC_SAI3_RXC__GPIO4_IO29       0x0
+               >;
+       };
+};
diff --git a/src/arm64/freescale/imx8mp-skov-revc-tian-g07017.dts b/src/arm64/freescale/imx8mp-skov-revc-tian-g07017.dts
new file mode 100644 (file)
index 0000000..9a562c0
--- /dev/null
@@ -0,0 +1,81 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+
+/dts-v1/;
+
+#include "imx8mp-skov-reva.dtsi"
+
+/ {
+       model = "SKOV IMX8MP CPU revC - TIAN G07017";
+       compatible = "skov,imx8mp-skov-revc-tian-g07017", "fsl,imx8mp";
+
+       panel {
+               compatible = "topland,tian-g07017-01";
+               backlight = <&backlight>;
+               power-supply = <&reg_tft_vcom>;
+
+               port {
+                       in_lvds0: endpoint {
+                               remote-endpoint = <&ldb_lvds_ch0>;
+                       };
+               };
+       };
+};
+
+&backlight {
+       status = "okay";
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       status = "okay";
+
+       touchscreen@38 {
+               compatible = "edt,edt-ft5506";
+               reg = <0x38>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_touchscreen>;
+               interrupts-extended = <&gpio4 28 IRQ_TYPE_EDGE_FALLING>;
+               reset-gpios = <&gpio4 29 GPIO_ACTIVE_LOW>;
+               touchscreen-size-x = <1024>;
+               touchscreen-size-y = <600>;
+               vcc-supply = <&reg_vdd_3v3>;
+               iovcc-supply = <&reg_vdd_3v3>;
+               wakeup-source;
+       };
+};
+
+&lcdif2 {
+       status = "okay";
+};
+
+&lvds_bridge {
+       assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>,
+                                <&clk IMX8MP_VIDEO_PLL1>;
+       assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
+       /* IMX8MP_VIDEO_PLL1 = IMX8MP_CLK_MEDIA_DISP2_PIX * 2 * 7 */
+       assigned-clock-rates = <0>, <358400000>;
+       status = "okay";
+
+       ports {
+               port@1 {
+                       ldb_lvds_ch0: endpoint {
+                               remote-endpoint = <&in_lvds0>;
+                       };
+               };
+       };
+};
+
+&pwm4 {
+       status = "okay";
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&reg_tft_vcom {
+       regulator-min-microvolt = <3160000>;
+       regulator-max-microvolt = <3160000>;
+       voltage-table = <3160000 73>;
+       status = "okay";
+};
index ae64731..23c612e 100644 (file)
 
        sound {
                compatible = "fsl,imx-audio-tlv320aic32x4";
-               model = "tq-tlv320aic32x";
+               model = "tqm-tlv320aic32";
                audio-cpu = <&sai3>;
                audio-codec = <&tlv320aic3x04>;
        };
index 3ddc5aa..6067ca3 100644 (file)
@@ -41,6 +41,7 @@
                spi-max-frequency = <80000000>;
                spi-tx-bus-width = <1>;
                spi-rx-bus-width = <4>;
+               vcc-supply = <&buck5_reg>;
 
                partitions {
                        compatible = "fixed-partitions";
index b2ac258..b59da91 100644 (file)
@@ -35,7 +35,6 @@
                      <0x1 0x00000000 0 0xc0000000>;
        };
 
-
        reg_usdhc2_vmmc: regulator-usdhc2-vmmc {
                compatible = "regulator-fixed";
                regulator-name = "VSD_3V3";
                startup-delay-us = <100>;
                off-on-delay-us = <12000>;
        };
+
+       reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc {
+               compatible = "regulator-gpio";
+               regulator-name = "VSD_VSEL";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&gpio2 12 GPIO_ACTIVE_HIGH>;
+               states = <3300000 0x0 1800000 0x1>;
+               vin-supply = <&ldo5>;
+       };
 };
 
 &A53_0 {
         pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
         cd-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
         vmmc-supply = <&reg_usdhc2_vmmc>;
+       vqmmc-supply = <&reg_usdhc2_vqmmc>;
         bus-width = <4>;
         status = "okay";
 };
index e0d3b8c..7c1c87e 100644 (file)
                                                assigned-clocks = <&clk IMX8MP_CLK_ML_CORE>,
                                                                  <&clk IMX8MP_CLK_ML_AXI>,
                                                                  <&clk IMX8MP_CLK_ML_AHB>;
-                                               assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
+                                               assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_1000M>,
                                                                         <&clk IMX8MP_SYS_PLL1_800M>,
                                                                         <&clk IMX8MP_SYS_PLL1_800M>;
-                                               assigned-clock-rates = <800000000>,
+                                               assigned-clock-rates = <1000000000>,
                                                                       <800000000>,
-                                                                      <300000000>;
+                                                                      <400000000>;
                                        };
 
                                        pgc_audio: power-domain@5 {
                                                assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
                                                                         <&clk IMX8MP_SYS_PLL1_800M>;
                                                assigned-clock-rates = <400000000>,
-                                                                      <600000000>;
+                                                                      <800000000>;
                                        };
 
                                        pgc_gpu2d: power-domain@6 {
                                         <&clk IMX8MP_CLK_SAI3>,
                                         <&clk IMX8MP_CLK_SAI5>,
                                         <&clk IMX8MP_CLK_SAI6>,
-                                        <&clk IMX8MP_CLK_SAI7>;
+                                        <&clk IMX8MP_CLK_SAI7>,
+                                        <&clk IMX8MP_CLK_AUDIO_AXI_ROOT>;
                                clock-names = "ahb",
                                              "sai1", "sai2", "sai3",
-                                             "sai5", "sai6", "sai7";
+                                             "sai5", "sai6", "sai7", "axi";
                                power-domains = <&pgc_audio>;
                                assigned-clocks = <&clk IMX8MP_AUDIO_PLL1>,
                                                  <&clk IMX8MP_AUDIO_PLL2>;
                                        opp-hz = /bits/ 64 <200000000>;
                                };
 
+                               /* Nominal drive mode maximum */
+                               opp-800000000 {
+                                       opp-hz = /bits/ 64 <800000000>;
+                               };
+
+                               /* Overdrive mode maximum */
                                opp-1000000000 {
                                        opp-hz = /bits/ 64 <1000000000>;
                                };
                        clock-names = "core", "shader", "bus", "reg";
                        assigned-clocks = <&clk IMX8MP_CLK_GPU3D_CORE>,
                                          <&clk IMX8MP_CLK_GPU3D_SHADER_CORE>;
-                       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
-                                                <&clk IMX8MP_SYS_PLL1_800M>;
-                       assigned-clock-rates = <800000000>, <800000000>;
+                       assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_1000M>,
+                                                <&clk IMX8MP_SYS_PLL2_1000M>;
+                       assigned-clock-rates = <1000000000>, <1000000000>;
                        power-domains = <&pgc_gpu3d>;
                };
 
                                 <&clk IMX8MP_CLK_GPU_AHB>;
                        clock-names = "core", "bus", "reg";
                        assigned-clocks = <&clk IMX8MP_CLK_GPU2D_CORE>;
-                       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>;
-                       assigned-clock-rates = <800000000>;
+                       assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_1000M>;
+                       assigned-clock-rates = <1000000000>;
                        power-domains = <&pgc_gpu2d>;
                };
 
index 9d8e723..d9f203c 100644 (file)
 };
 
 &usb_dwc3_0 {
-       #address-cells = <1>;
-       #size-cells = <0>;
        dr_mode = "otg";
        status = "okay";
 
-       port@0 {
-               reg = <0>;
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
 
-               typec_hs: endpoint {
-                       remote-endpoint = <&usb_con_hs>;
+               port@0 {
+                       reg = <0>;
+
+                       typec_hs: endpoint {
+                               remote-endpoint = <&usb_con_hs>;
+                       };
                };
-       };
 
-       port@1 {
-               reg = <1>;
+               port@1 {
+                       reg = <1>;
 
-               typec_ss: endpoint {
-                       remote-endpoint = <&usb_con_ss>;
+                       typec_ss: endpoint {
+                               remote-endpoint = <&usb_con_ss>;
+                       };
                };
        };
 };
index bb37a32..9e0e2d7 100644 (file)
                interrupt-parent = <&gpio1>;
                interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
                interrupt-names = "irq";
-               extcon = <&usb3_phy0>;
                wakeup-source;
 
                connector {
 };
 
 &usb_dwc3_0 {
-       #address-cells = <1>;
-       #size-cells = <0>;
        dr_mode = "otg";
        usb-role-switch;
        status = "okay";
 
-       port@0 {
-               reg = <0>;
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
 
-               typec_hs: endpoint {
-                       remote-endpoint = <&usb_con_hs>;
+               port@0 {
+                       reg = <0>;
+
+                       typec_hs: endpoint {
+                               remote-endpoint = <&usb_con_hs>;
+                       };
                };
-       };
 
-       port@1 {
-               reg = <1>;
+               port@1 {
+                       reg = <1>;
 
-               typec_ss: endpoint {
-                       remote-endpoint = <&usb_con_ss>;
+                       typec_ss: endpoint {
+                               remote-endpoint = <&usb_con_ss>;
+                       };
                };
        };
 };
index 01e5092..c92001c 100644 (file)
                spi-max-frequency = <84000000>;
                spi-tx-bus-width = <1>;
                spi-rx-bus-width = <4>;
+               vcc-supply = <&nvcc_1v8_reg>;
 
                partitions {
                        compatible = "fixed-partitions";
index 81ba8b2..b1c3f33 100644 (file)
@@ -9,8 +9,6 @@
 
 / {
        model = "Toradex Apalis iMX8QM V1.1";
-       compatible = "toradex,apalis-imx8-v1.1",
-                    "fsl,imx8qm";
 };
 
 /* TODO: Cooling Maps */
index 4d6427f..c18f570 100644 (file)
@@ -7,8 +7,6 @@
 
 / {
        model = "Toradex Apalis iMX8QM";
-       compatible = "toradex,apalis-imx8",
-                    "fsl,imx8qm";
 };
 
 &ethphy0 {
index 50fd337..353f825 100644 (file)
                enable-active-high;
        };
 
+       reg_audio: regulator-audio {
+               compatible = "regulator-fixed";
+               regulator-name = "cs42888_supply";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
        reg_fec2_supply: regulator-fec2-nvcc {
                compatible = "regulator-fixed";
                regulator-name = "fec2_nvcc";
                regulator-max-microvolt = <1800000>;
        };
 
+       reg_audio_5v: regulator-audio-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       reg_audio_3v3: regulator-audio-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       reg_audio_1v8: regulator-audio-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        bt_sco_codec: audio-codec-bt {
                compatible = "linux,bt-sco";
                #sound-dai-cells = <1>;
                };
        };
 
+       sound-cs42888 {
+               compatible = "fsl,imx-audio-cs42888";
+               model = "imx-cs42888";
+               audio-cpu = <&esai0>;
+               audio-codec = <&cs42888>;
+               audio-asrc = <&asrc0>;
+               audio-routing = "Line Out Jack", "AOUT1L",
+                               "Line Out Jack", "AOUT1R",
+                               "Line Out Jack", "AOUT2L",
+                               "Line Out Jack", "AOUT2R",
+                               "Line Out Jack", "AOUT3L",
+                               "Line Out Jack", "AOUT3R",
+                               "Line Out Jack", "AOUT4L",
+                               "Line Out Jack", "AOUT4R",
+                               "AIN1L", "Line In Jack",
+                               "AIN1R", "Line In Jack",
+                               "AIN2L", "Line In Jack",
+                               "AIN2R", "Line In Jack";
+       };
+
        sound-wm8960 {
                compatible = "fsl,imx-audio-wm8960";
                model = "wm8960-audio";
                gpio-controller;
                #gpio-cells = <2>;
        };
+
+       cs42888: audio-codec@48 {
+               compatible = "cirrus,cs42888";
+               reg = <0x48>;
+               clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
+               clock-names = "mclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_cs42888_reset>;
+               VA-supply = <&reg_audio>;
+               VD-supply = <&reg_audio>;
+               VLS-supply = <&reg_audio>;
+               VLC-supply = <&reg_audio>;
+               reset-gpios = <&lsio_gpio4 25 GPIO_ACTIVE_LOW>;
+               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>,
+                                 <&mclkout0_lpcg IMX_LPCG_CLK_0>;
+               assigned-clock-rates = <786432000>, <49152000>, <12288000>, <12288000>;
+       };
 };
 
 &cm41_intmux {
        status = "okay";
 };
 
+&esai0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_esai0>;
+       assigned-clocks = <&acm IMX_ADMA_ACM_ESAI0_MCLK_SEL>,
+                         <&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>,
+                         <&esai0_lpcg IMX_LPCG_CLK_4>;
+       assigned-clock-parents = <&aud_pll_div0_lpcg IMX_LPCG_CLK_0>;
+       assigned-clock-rates = <0>, <786432000>, <49152000>, <12288000>, <49152000>;
+       status = "okay";
+};
+
 &hsio_phy {
        fsl,hsio-cfg = "pciea-pcieb-sata";
        fsl,refclk-pad-mode = "input";
                wlf,shared-lrclk;
                wlf,hp-cfg = <2 2 3>;
                wlf,gpio-cfg = <1 3>;
+               AVDD-supply = <&reg_audio_3v3>;
+               DBVDD-supply = <&reg_audio_1v8>;
+               DCVDD-supply = <&reg_audio_1v8>;
+               SPKVDD1-supply = <&reg_audio_5v>;
+               SPKVDD2-supply = <&reg_audio_5v>;
        };
 };
 
                >;
        };
 
+       pinctrl_cs42888_reset: cs42888_resetgrp {
+               fsl,pins = <
+                       IMX8QM_QSPI1A_DATA1_LSIO_GPIO4_IO25                     0x0600004c
+               >;
+       };
+
        pinctrl_i2c0: i2c0grp {
                fsl,pins = <
                        IMX8QM_HDMI_TX0_TS_SCL_DMA_I2C0_SCL                     0x06000021
                >;
        };
 
+       pinctrl_esai0: esai0grp {
+               fsl,pins = <
+                       IMX8QM_ESAI0_FSR_AUD_ESAI0_FSR                          0xc6000040
+                       IMX8QM_ESAI0_FST_AUD_ESAI0_FST                          0xc6000040
+                       IMX8QM_ESAI0_SCKR_AUD_ESAI0_SCKR                        0xc6000040
+                       IMX8QM_ESAI0_SCKT_AUD_ESAI0_SCKT                        0xc6000040
+                       IMX8QM_ESAI0_TX0_AUD_ESAI0_TX0                          0xc6000040
+                       IMX8QM_ESAI0_TX1_AUD_ESAI0_TX1                          0xc6000040
+                       IMX8QM_ESAI0_TX2_RX3_AUD_ESAI0_TX2_RX3                  0xc6000040
+                       IMX8QM_ESAI0_TX3_RX2_AUD_ESAI0_TX3_RX2                  0xc6000040
+                       IMX8QM_ESAI0_TX4_RX1_AUD_ESAI0_TX4_RX1                  0xc6000040
+                       IMX8QM_ESAI0_TX5_RX0_AUD_ESAI0_TX5_RX0                  0xc6000040
+               >;
+       };
+
        pinctrl_fec1: fec1grp {
                fsl,pins = <
                        IMX8QM_ENET0_MDC_CONN_ENET0_MDC                         0x06000020
index b1d0189..e80f722 100644 (file)
                status = "disabled";
        };
 
+       pciea_ep: pcie-ep@5f000000 {
+               compatible = "fsl,imx8q-pcie-ep";
+               reg = <0x5f000000 0x00010000>,
+                     <0x40000000 0x10000000>;
+               reg-names = "dbi", "addr_space";
+               num-lanes = <1>;
+               interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "dma";
+               clocks = <&pciea_lpcg IMX_LPCG_CLK_6>,
+                        <&pciea_lpcg IMX_LPCG_CLK_4>,
+                        <&pciea_lpcg IMX_LPCG_CLK_5>;
+               clock-names = "dbi", "mstr", "slv";
+               power-domains = <&pd IMX_SC_R_PCIE_A>;
+               fsl,max-link-speed = <3>;
+               num-ib-windows = <6>;
+               num-ob-windows = <6>;
+               status = "disabled";
+       };
+
        pcieb: pcie@5f010000 {
                compatible = "fsl,imx8q-pcie";
                reg = <0x5f010000 0x10000>,
@@ -50,8 +69,9 @@
                ranges = <0x81000000 0 0x00000000 0x8ff80000 0 0x00010000>,
                         <0x82000000 0 0x80000000 0x80000000 0 0x0ff00000>;
                #interrupt-cells = <1>;
-               interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "msi";
+               interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "msi", "dma";
                #address-cells = <3>;
                #size-cells = <2>;
                clocks = <&pcieb_lpcg IMX_LPCG_CLK_6>,
diff --git a/src/arm64/freescale/imx8qxp-mek-pcie-ep.dtso b/src/arm64/freescale/imx8qxp-mek-pcie-ep.dtso
new file mode 100644 (file)
index 0000000..4f562eb
--- /dev/null
@@ -0,0 +1,22 @@
+// 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 be79c79..a669a5d 100644 (file)
                regulator-name = "cs42888_supply";
        };
 
+       reg_audio_5v: regulator-audio-pwr {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       reg_audio_3v3: regulator-audio-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       reg_audio_1v8: regulator-audio-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "audio-1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        reg_can_en: regulator-can-en {
                compatible = "regulator-fixed";
                regulator-max-microvolt = <3300000>;
                wlf,shared-lrclk;
                wlf,hp-cfg = <2 2 3>;
                wlf,gpio-cfg = <1 3>;
+               AVDD-supply = <&reg_audio_3v3>;
+               DBVDD-supply = <&reg_audio_1v8>;
+               DCVDD-supply = <&reg_audio_1v8>;
+               SPKVDD1-supply = <&reg_audio_5v>;
+               SPKVDD2-supply = <&reg_audio_5v>;
        };
 
        pca6416: gpio@20 {
index d5abfdb..ecb35c6 100644 (file)
                          "",
                          "SODIMM_61",
                          "SODIMM_103",
-                         "",
-                         "",
+                         "SODIMM_79",
+                         "SODIMM_97",
                          "",
                          "SODIMM_25",
                          "SODIMM_27",
index 47c1363..119a162 100644 (file)
                                regulator-name = "NVCC_SD (LDO5)";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <3300000>;
+                               nxp,sd-vsel-fixed-low;
                        };
                };
        };
        pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
        pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
        vmmc-supply = <&reg_usdhc2_vcc>;
+       vqmmc-supply = <&reg_nvcc_sd>;
        cd-gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
 };
 
                        MX93_PAD_SD2_DATA1__USDHC2_DATA1                0x40001382 /* SDIO_A_D1 */
                        MX93_PAD_SD2_DATA2__USDHC2_DATA2                0x40001382 /* SDIO_A_D2 */
                        MX93_PAD_SD2_DATA3__USDHC2_DATA3                0x40001382 /* SDIO_A_D3 */
-                       MX93_PAD_SD2_VSELECT__USDHC2_VSELECT            0x1d0
                >;
        };
 
                        MX93_PAD_SD2_DATA1__USDHC2_DATA1                0x4000138e /* SDIO_A_D1 */
                        MX93_PAD_SD2_DATA2__USDHC2_DATA2                0x4000138e /* SDIO_A_D2 */
                        MX93_PAD_SD2_DATA3__USDHC2_DATA3                0x4000138e /* SDIO_A_D3 */
-                       MX93_PAD_SD2_VSELECT__USDHC2_VSELECT            0x1d0
                >;
        };
 
                        MX93_PAD_SD2_DATA1__USDHC2_DATA1                0x400013fe /* SDIO_A_D1 */
                        MX93_PAD_SD2_DATA2__USDHC2_DATA2                0x400013fe /* SDIO_A_D2 */
                        MX93_PAD_SD2_DATA3__USDHC2_DATA3                0x400013fe /* SDIO_A_D3 */
-                       MX93_PAD_SD2_VSELECT__USDHC2_VSELECT            0x1d0
                >;
        };
 
index 8e939d7..ebbac5f 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
 /*
- * Copyright (c) 2022-2023 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * Copyright (c) 2022-2024 TQ-Systems GmbH <linux@ew.tq-group.com>,
  * D-82229 Seefeld, Germany.
  * Author: Markus Niebel
  * Author: Alexander Stein
@@ -26,8 +26,8 @@
 
        aliases {
                eeprom0 = &eeprom0;
-               ethernet0 = &fec;
-               ethernet1 = &eqos;
+               ethernet0 = &eqos;
+               ethernet1 = &fec;
                rtc0 = &pcf85063;
                rtc1 = &bbnsm_rtc;
        };
                                  "WLAN_PERST#", "12V_EN";
 
                /*
-                * Controls the WiFi card PD pin which is low active
-                * as power down signal. The output-high states, the signal
-                * is active, e.g. card is powered down
+                * Controls the WiFi card's low-active power down pin.
+                * The output-low states, the signal is inactive,
+                * resulting in high signal at power-down pin
                 */
                wlan-pd-hog {
                        gpio-hog;
                        gpios = <4 GPIO_ACTIVE_LOW>;
-                       output-high;
+                       output-low;
                        line-name = "WLAN_PD#";
                };
 
                /*
-                * Controls the WiFi card disable pin which is low active
-                * as disable signal. The output-high states, the signal
-                * is active, e.g. card is disabled
+                * Controls the WiFi card's low-active disable pin.
+                * The output-low states, the signal is inactive,
+                * resulting in high signal at power-down pin
                 */
                wlan-wdisable-hog {
                        gpio-hog;
                        gpios = <5 GPIO_ACTIVE_LOW>;
-                       output-high;
+                       output-low;
                        line-name = "WLAN_W_DISABLE#";
                };
 
                /*
-                * Controls the WiFi card reset pin which is low active
-                * as reset signal. The output-high states, the signal
-                * is active, e.g. card in reset
+                * Controls the WiFi card's reset pin.
+                * The output-low states, the signal is inactive,
+                * resulting in high signal at power-down pin
                 */
                wlan-perst-hog {
                        gpio-hog;
                        gpios = <6 GPIO_ACTIVE_LOW>;
-                       output-high;
+                       output-low;
                        line-name = "WLAN_PERST#";
                };
        };
                >;
        };
 
-       pinctrl_pcf85063: pcf85063grp {
-               fsl,pins = <
-                       MX93_PAD_SAI1_RXD0__GPIO1_IO14                  0x1000
-               >;
-       };
-
        pinctrl_mipi_csi: mipicsigrp {
                fsl,pins = <
                        MX93_PAD_CCM_CLKO3__CCMSRCGPCMIX_CLKO3          0x051e /* MCLK */
                >;
        };
 
+       pinctrl_pcf85063: pcf85063grp {
+               fsl,pins = <
+                       MX93_PAD_SAI1_RXD0__GPIO1_IO14                  0x1000
+               >;
+       };
+
        pinctrl_pexp_irq: pexpirqgrp {
                fsl,pins = <
                        /* HYS | FSEL_0 | No DSE */
                >;
        };
 
-       pinctrl_temp_sensor_som: tempsensorsomgrp {
+       pinctrl_tc9595: tc9595-grp {
                fsl,pins = <
-                       /* HYS | FSEL_0 | no DSE */
-                       MX93_PAD_SAI1_TXFS__GPIO1_IO11                  0x1000
+                       /* HYS | PD | FSEL_0 | no DSE */
+                       MX93_PAD_CCM_CLKO4__GPIO4_IO29                  0x1400
                >;
        };
 
-       pinctrl_tc9595: tc9595-grp {
+       pinctrl_temp_sensor_som: tempsensorsomgrp {
                fsl,pins = <
-                       /* HYS | PD | FSEL_0 | no DSE */
-                       MX93_PAD_CCM_CLKO4__GPIO4_IO29                  0x1400
+                       /* HYS | FSEL_0 | no DSE */
+                       MX93_PAD_SAI1_TXFS__GPIO1_IO11                  0x1000
                >;
        };
 
index 2e953a0..9e88c42 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
 /*
- * Copyright (c) 2022-2023 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * Copyright (c) 2022-2024 TQ-Systems GmbH <linux@ew.tq-group.com>,
  * D-82229 Seefeld, Germany.
  * Author: Markus Niebel
  * Author: Alexander Stein
@@ -26,8 +26,8 @@
 
        aliases {
                eeprom0 = &eeprom0;
-               ethernet0 = &fec;
-               ethernet1 = &eqos;
+               ethernet0 = &eqos;
+               ethernet1 = &fec;
                rtc0 = &pcf85063;
                rtc1 = &bbnsm_rtc;
        };
index 56766fd..64cd077 100644 (file)
                        #index-cells = <1>;
                };
 
+               memory-controller@4e300000 {
+                       compatible = "nxp,imx9-memory-controller";
+                       reg = <0x4e300000 0x800>, <0x4e301000 0x1000>;
+                       reg-names = "ctrl", "inject";
+                       interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
+                       little-endian;
+               };
+
                ddr-pmu@4e300dc0 {
                        compatible = "fsl,imx93-ddr-pmu";
                        reg = <0x4e300dc0 0x200>;
diff --git a/src/arm64/freescale/imx95-15x15-evk.dts b/src/arm64/freescale/imx95-15x15-evk.dts
new file mode 100644 (file)
index 0000000..514f242
--- /dev/null
@@ -0,0 +1,1130 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 NXP
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/i3c/i3c.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/phy/phy-imx8-pcie.h>
+#include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/usb/pd.h>
+#include "imx95.dtsi"
+
+#define FALLING_EDGE           BIT(0)
+#define RISING_EDGE            BIT(1)
+
+#define BRD_SM_CTRL_SD3_WAKE           0x8000
+#define BRD_SM_CTRL_PCIE1_WAKE         0x8001
+#define BRD_SM_CTRL_BT_WAKE            0x8002
+#define BRD_SM_CTRL_PCIE2_WAKE         0x8003
+#define BRD_SM_CTRL_BUTTON             0x8004
+
+/ {
+       compatible = "fsl,imx95-15x15-evk", "fsl,imx95";
+       model = "NXP i.MX95 15X15 board";
+
+       aliases {
+               ethernet0 = &enetc_port0;
+               ethernet1 = &enetc_port1;
+               serial0 = &lpuart1;
+       };
+
+       bt_sco_codec: bt-sco-codec {
+               compatible = "linux,bt-sco";
+               #sound-dai-cells = <1>;
+       };
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               stdout-path = &lpuart1;
+       };
+
+       fan0: pwm-fan {
+               compatible = "pwm-fan";
+               #cooling-cells = <2>;
+               cooling-levels = <64 128 192 255>;
+               pwms = <&tpm6 0 4000000 PWM_POLARITY_INVERTED>;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "+V1.8_SW";
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "+V3.3_SW";
+       };
+
+       reg_vref_1v8: regulator-adc-vref {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "vref_1v8";
+       };
+
+       reg_audio_pwr: regulator-audio-pwr {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "audio-pwr";
+               gpio = <&pcal6524 13 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_audio_switch1: regulator-audio-switch1 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "audio-switch1";
+               gpio = <&pcal6524 0 GPIO_ACTIVE_LOW>;
+       };
+
+       reg_can2_stby: regulator-can2-stby {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "can2-stby";
+               gpio = <&pcal6524 14 GPIO_ACTIVE_LOW>;
+       };
+
+       reg_m2_pwr: regulator-m2-pwr {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "M.2-power";
+               gpio = <&pcal6524 10 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       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 = <&gpio3 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_usdhc3_vmmc: regulator-usdhc3 {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "WLAN_EN";
+               vin-supply = <&reg_m2_pwr>;
+               gpio = <&pcal6524 11 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               /*
+                * IW612 wifi chip needs more delay than other wifi chips to complete
+                * the host interface initialization after power up, otherwise the
+                * internal state of IW612 may be unstable, resulting in the failure of
+                * the SDIO3.0 switch voltage.
+                */
+               startup-delay-us = <20000>;
+       };
+
+       reg_vcc_12v: regulator-vcc-12v {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <12000000>;
+               regulator-min-microvolt = <12000000>;
+               regulator-name = "VCC_12V";
+               gpio = <&pcal6524 1 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reserved-memory {
+               ranges;
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               linux_cma: linux,cma {
+                       compatible = "shared-dma-pool";
+                       alloc-ranges = <0 0x80000000 0 0x7F000000>;
+                       reusable;
+                       size = <0 0x3c000000>;
+                       linux,cma-default;
+               };
+
+               vdev0vring0: vdev0vring0@88000000 {
+                       reg = <0 0x88000000 0 0x8000>;
+                       no-map;
+               };
+
+               vdev0vring1: vdev0vring1@88008000 {
+                       reg = <0 0x88008000 0 0x8000>;
+                       no-map;
+               };
+
+               vdev1vring0: vdev1vring0@88010000 {
+                       reg = <0 0x88010000 0 0x8000>;
+                       no-map;
+               };
+
+               vdev1vring1: vdev1vring1@88018000 {
+                       reg = <0 0x88018000 0 0x8000>;
+                       no-map;
+               };
+
+               vdevbuffer: vdevbuffer@88020000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x88020000 0 0x100000>;
+                       no-map;
+               };
+
+               rsc_table: rsc-table@88220000 {
+                       reg = <0 0x88220000 0 0x1000>;
+                       no-map;
+               };
+
+               vpu_boot: vpu_boot@a0000000 {
+                       reg = <0 0xa0000000 0 0x100000>;
+                       no-map;
+               };
+       };
+
+       sound-bt-sco {
+               compatible = "simple-audio-card";
+               simple-audio-card,bitclock-inversion;
+               simple-audio-card,bitclock-master = <&btcpu>;
+               simple-audio-card,format = "dsp_a";
+               simple-audio-card,frame-master = <&btcpu>;
+               simple-audio-card,name = "bt-sco-audio";
+
+               simple-audio-card,codec {
+                       sound-dai = <&bt_sco_codec 1>;
+               };
+
+               btcpu: simple-audio-card,cpu {
+                       dai-tdm-slot-num = <2>;
+                       dai-tdm-slot-width = <16>;
+                       sound-dai = <&sai1>;
+               };
+       };
+
+       sound-micfil {
+               compatible = "fsl,imx-audio-card";
+               model = "micfil-audio";
+
+               pri-dai-link {
+                       format = "i2s";
+                       link-name = "micfil hifi";
+
+                       cpu {
+                               sound-dai = <&micfil>;
+                       };
+               };
+       };
+
+       sound-wm8962 {
+               compatible = "fsl,imx-audio-wm8962";
+               audio-codec = <&wm8962>;
+               audio-cpu = <&sai3>;
+               audio-routing = "Headphone Jack", "HPOUTL", "Headphone Jack", "HPOUTR",
+                               "Ext Spk", "SPKOUTL", "Ext Spk", "SPKOUTR", "AMIC", "MICBIAS",
+                               "IN3R", "AMIC", "IN1R", "AMIC";
+               hp-det-gpio = <&gpio2 21 GPIO_ACTIVE_HIGH>;
+               model = "wm8962-audio";
+               pinctrl-0 = <&pinctrl_hp>;
+               pinctrl-names = "default";
+       };
+
+       sound-xcvr {
+               compatible = "fsl,imx-audio-card";
+               model = "imx-audio-xcvr";
+
+               pri-dai-link {
+                       link-name = "XCVR PCM";
+
+                       cpu {
+                               sound-dai = <&xcvr>;
+                       };
+               };
+       };
+
+       usdhc3_pwrseq: usdhc3-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               pinctrl-0 = <&pinctrl_usdhc3_pwrseq>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
+       };
+
+       memory@80000000 {
+               reg = <0x0 0x80000000 0 0x80000000>;
+               device_type = "memory";
+       };
+};
+
+&adc1 {
+       vref-supply = <&reg_vref_1v8>;
+       status = "okay";
+};
+
+&enetc_port0 {
+       phy-handle = <&ethphy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-0 = <&pinctrl_enetc0>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&enetc_port1 {
+       phy-handle = <&ethphy1>;
+       phy-mode = "rgmii-id";
+       pinctrl-0 = <&pinctrl_enetc1>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&flexcan2 {
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       pinctrl-names = "default";
+       xceiver-supply = <&reg_can2_stby>;
+       status = "okay";
+};
+
+&i3c2 {
+       i2c-scl-hz = <400000>;
+       pinctrl-0 = <&pinctrl_i3c2>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       pca9570: gpio@24 {
+               compatible = "nxp,pca9570";
+               reg = <0x24 0 (I2C_FILTER)>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               gpio-line-names = "OUT1", "OUT2", "OUT3", "OUT4";
+       };
+};
+
+&lpi2c2 {
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_lpi2c2>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       wm8962: codec@1a {
+               compatible = "wlf,wm8962";
+               reg = <0x1a>;
+               clocks = <&scmi_clk IMX95_CLK_SAI3>;
+               AVDD-supply = <&reg_audio_pwr>;
+               CPVDD-supply = <&reg_audio_pwr>;
+               DBVDD-supply = <&reg_audio_pwr>;
+               DCVDD-supply = <&reg_audio_pwr>;
+               gpio-cfg = <
+                       0x0000
+                       0x0000
+                       0x0000
+                       0x0000
+                       0x0000
+                       0x0000
+               >;
+               MICVDD-supply = <&reg_audio_pwr>;
+               PLLVDD-supply = <&reg_audio_pwr>;
+               SPKVDD1-supply = <&reg_audio_pwr>;
+               SPKVDD2-supply = <&reg_audio_pwr>;
+       };
+
+       pcal6524: gpio@22 {
+               compatible = "nxp,pcal6524";
+               reg = <0x22>;
+               #interrupt-cells = <2>;
+               interrupt-controller;
+               interrupt-parent = <&gpio5>;
+               interrupts = <14 IRQ_TYPE_LEVEL_LOW>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               pinctrl-0 = <&pinctrl_pcal6524>;
+               pinctrl-names = "default";
+       };
+};
+
+&lpi2c3 {
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_lpi2c3>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       ptn5110: tcpc@50 {
+               compatible = "nxp,ptn5110", "tcpci";
+               reg = <0x50>;
+               interrupt-parent = <&gpio5>;
+               interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-0 = <&pinctrl_ptn5110>;
+               pinctrl-names = "default";
+
+               typec_con: connector {
+                       compatible = "usb-c-connector";
+                       data-role = "dual";
+                       label = "USB-C";
+                       op-sink-microwatt = <15000000>;
+                       power-role = "dual";
+                       self-powered;
+                       sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
+                                    PDO_VAR(5000, 20000, 3000)>;
+                       source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       try-power-role = "sink";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       typec_con_hs: endpoint {
+                                               remote-endpoint = <&usb3_data_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       typec_con_ss: endpoint {
+                                               remote-endpoint = <&usb3_data_ss>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       pca9632: led-controller@62 {
+               compatible = "nxp,pca9632";
+               reg = <0x62>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               nxp,inverted-out;
+
+               led_backlight0: led@0 {
+                       reg = <0>;
+                       color = <LED_COLOR_ID_WHITE>;
+                       function = LED_FUNCTION_BACKLIGHT;
+                       function-enumerator = <0>;
+               };
+
+               led_backlight1: led@1 {
+                       reg = <1>;
+                       color = <LED_COLOR_ID_WHITE>;
+                       function = LED_FUNCTION_BACKLIGHT;
+                       function-enumerator = <1>;
+               };
+       };
+};
+
+&lpi2c4 {
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_lpi2c4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&lpi2c6 {
+       clock-frequency = <100000>;
+       pinctrl-0 = <&pinctrl_lpi2c6>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&lpuart1 {
+       pinctrl-0 = <&pinctrl_uart1>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&lpuart5 {
+       pinctrl-0 = <&pinctrl_uart5>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       bluetooth {
+               compatible = "nxp,88w8987-bt";
+       };
+};
+
+&micfil {
+       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_PDM>;
+       assigned-clock-parents = <0>, <0>, <0>, <0>, <&scmi_clk IMX95_CLK_AUDIOPLL1>;
+       assigned-clock-rates = <3932160000>, <3612672000>, <393216000>, <361267200>, <49152000>;
+       #sound-dai-cells = <0>;
+       pinctrl-0 = <&pinctrl_pdm>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&mu7 {
+       status = "okay";
+};
+
+&netc_blk_ctrl {
+       status = "okay";
+};
+
+&netc_bus0 {
+       msi-map = <0x00 &its 0x60 0x1>, //ENETC0 PF
+                 <0x10 &its 0x61 0x1>, //ENETC0 VF0
+                 <0x20 &its 0x62 0x1>, //ENETC0 VF1
+                 <0x40 &its 0x63 0x1>, //ENETC1 PF
+                 <0x50 &its 0x65 0x1>, //ENETC1 VF0
+                 <0x60 &its 0x66 0x1>, //ENETC1 VF1
+                 <0x80 &its 0x64 0x1>, //ENETC2 PF
+                 <0xc0 &its 0x67 0x1>;
+};
+
+&netc_emdio {
+       pinctrl-0 = <&pinctrl_emdio>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       ethphy0: ethernet-phy@1 {
+               reg = <1>;
+               reset-assert-us = <10000>;
+               reset-deassert-us = <80000>;
+               reset-gpios = <&pcal6524 4 GPIO_ACTIVE_LOW>;
+               realtek,clkout-disable;
+       };
+
+       ethphy1: ethernet-phy@2 {
+               reg = <2>;
+               reset-assert-us = <10000>;
+               reset-deassert-us = <80000>;
+               reset-gpios = <&pcal6524 5 GPIO_ACTIVE_LOW>;
+               realtek,clkout-disable;
+       };
+};
+
+&netc_timer {
+       status = "okay";
+};
+
+&netcmix_blk_ctrl {
+       status = "okay";
+};
+
+&pcie0 {
+       pinctrl-0 = <&pinctrl_pcie0>;
+       pinctrl-names = "default";
+       reset-gpio = <&gpio5 13 GPIO_ACTIVE_LOW>;
+       vpcie-supply = <&reg_m2_pwr>;
+       status = "okay";
+};
+
+&sai1 {
+       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_SAI1>;
+       assigned-clock-parents = <0>, <0>, <0>, <0>, <&scmi_clk IMX95_CLK_AUDIOPLL1>;
+       assigned-clock-rates = <3932160000>, <3612672000>, <393216000>, <361267200>, <12288000>;
+       #sound-dai-cells = <0>;
+       pinctrl-0 = <&pinctrl_sai1>;
+       pinctrl-names = "default";
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
+&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>;
+       #sound-dai-cells = <0>;
+       pinctrl-0 = <&pinctrl_sai3>;
+       pinctrl-names = "default";
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
+&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
+               >;
+       };
+
+       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_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
+                       IMX95_PAD_ENET1_RXC__NETCMIX_TOP_ETH0_RGMII_RX_CLK      0x58e
+                       IMX95_PAD_ENET1_RD0__NETCMIX_TOP_ETH0_RGMII_RD0         0x57e
+                       IMX95_PAD_ENET1_RD1__NETCMIX_TOP_ETH0_RGMII_RD1         0x57e
+                       IMX95_PAD_ENET1_RD2__NETCMIX_TOP_ETH0_RGMII_RD2         0x57e
+                       IMX95_PAD_ENET1_RD3__NETCMIX_TOP_ETH0_RGMII_RD3         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_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
+                       IMX95_PAD_ENET2_RXC__NETCMIX_TOP_ETH1_RGMII_RX_CLK      0x58e
+                       IMX95_PAD_ENET2_RD0__NETCMIX_TOP_ETH1_RGMII_RD0         0x57e
+                       IMX95_PAD_ENET2_RD1__NETCMIX_TOP_ETH1_RGMII_RD1         0x57e
+                       IMX95_PAD_ENET2_RD2__NETCMIX_TOP_ETH1_RGMII_RD2         0x57e
+                       IMX95_PAD_ENET2_RD3__NETCMIX_TOP_ETH1_RGMII_RD3         0x57e
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO25__CAN2_TX                            0x39e
+                       IMX95_PAD_GPIO_IO27__CAN2_RX                            0x39e
+               >;
+       };
+
+       pinctrl_hp: hpgrp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO21__GPIO2_IO_BIT21                     0x31e
+               >;
+       };
+
+       pinctrl_i3c2: i3c2grp {
+               fsl,pins = <
+                       IMX95_PAD_ENET1_MDC__I3C2_SCL                           0x40000186
+                       IMX95_PAD_ENET1_MDIO__I3C2_SDA                          0x40000186
+               >;
+       };
+
+       pinctrl_lpi2c1: lpi2c1grp {
+               fsl,pins = <
+                       IMX95_PAD_I2C1_SCL__AONMIX_TOP_LPI2C1_SCL               0x40000b9e
+                       IMX95_PAD_I2C1_SDA__AONMIX_TOP_LPI2C1_SDA               0x40000b9e
+               >;
+       };
+
+       pinctrl_lpi2c2: lpi2c2grp {
+               fsl,pins = <
+                       IMX95_PAD_I2C2_SCL__AONMIX_TOP_LPI2C2_SCL               0x40000b9e
+                       IMX95_PAD_I2C2_SDA__AONMIX_TOP_LPI2C2_SDA               0x40000b9e
+               >;
+       };
+
+       pinctrl_lpi2c3: lpi2c3grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO28__LPI2C3_SDA                         0x40000b9e
+                       IMX95_PAD_GPIO_IO29__LPI2C3_SCL                         0x40000b9e
+               >;
+       };
+
+       pinctrl_lpi2c4: lpi2c4grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO30__LPI2C4_SDA                         0x40000b9e
+                       IMX95_PAD_GPIO_IO31__LPI2C4_SCL                         0x40000b9e
+               >;
+       };
+
+       pinctrl_lpi2c6: lpi2c6grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO02__LPI2C6_SDA                         0x40000b9e
+                       IMX95_PAD_GPIO_IO03__LPI2C6_SCL                         0x40000b9e
+               >;
+       };
+
+       pinctrl_mipi_dsi_csi: mipidsigrp {
+               fsl,pins = <
+                       IMX95_PAD_XSPI1_DATA6__GPIO5_IO_BIT6                    0x31e
+               >;
+       };
+
+       pinctrl_pcal6524: pcal6524grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO34__GPIO5_IO_BIT14                     0x31e
+               >;
+       };
+
+       pinctrl_pcie0: pcie0grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO32__HSIOMIX_TOP_PCIE1_CLKREQ_B         0x40000b1e
+                       IMX95_PAD_GPIO_IO33__GPIO5_IO_BIT13                     0x31e
+               >;
+       };
+
+       pinctrl_pdm: pdmgrp {
+               fsl,pins = <
+                       IMX95_PAD_PDM_CLK__AONMIX_TOP_PDM_CLK                           0x31e
+                       IMX95_PAD_PDM_BIT_STREAM0__AONMIX_TOP_PDM_BIT_STREAM_BIT0       0x31e
+               >;
+       };
+
+       pinctrl_ptn5110: ptn5110grp {
+               fsl,pins = <
+                       IMX95_PAD_XSPI1_SS1_B__GPIO5_IO_BIT11                   0x31e
+               >;
+       };
+
+       pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp {
+               fsl,pins = <
+                       IMX95_PAD_SD2_RESET_B__GPIO3_IO_BIT7                    0x31e
+               >;
+       };
+
+       pinctrl_sai1: sai1grp {
+               fsl,pins = <
+                       IMX95_PAD_SAI1_RXD0__AONMIX_TOP_SAI1_RX_DATA_BIT0       0x31e
+                       IMX95_PAD_SAI1_TXC__AONMIX_TOP_SAI1_TX_BCLK             0x31e
+                       IMX95_PAD_SAI1_TXFS__AONMIX_TOP_SAI1_TX_SYNC            0x31e
+                       IMX95_PAD_SAI1_TXD0__AONMIX_TOP_SAI1_TX_DATA_BIT0       0x31e
+               >;
+       };
+
+       pinctrl_sai2: sai2grp {
+               fsl,pins = <
+                       IMX95_PAD_ENET2_MDIO__NETCMIX_TOP_SAI2_RX_BCLK          0x31e
+                       IMX95_PAD_ENET2_MDC__NETCMIX_TOP_SAI2_RX_SYNC           0x31e
+                       IMX95_PAD_ENET2_TD3__NETCMIX_TOP_SAI2_RX_DATA_BIT0      0x31e
+                       IMX95_PAD_ENET2_TD2__NETCMIX_TOP_SAI2_RX_DATA_BIT1      0x31e
+                       IMX95_PAD_ENET2_TXC__NETCMIX_TOP_SAI2_TX_BCLK           0x31e
+                       IMX95_PAD_ENET2_TX_CTL__NETCMIX_TOP_SAI2_TX_SYNC        0x31e
+                       IMX95_PAD_ENET2_RX_CTL__NETCMIX_TOP_SAI2_TX_DATA_BIT0   0x31e
+                       IMX95_PAD_ENET2_RXC__NETCMIX_TOP_SAI2_TX_DATA_BIT1      0x31e
+                       IMX95_PAD_ENET2_RD0__NETCMIX_TOP_SAI2_TX_DATA_BIT2      0x31e
+                       IMX95_PAD_ENET2_RD1__NETCMIX_TOP_SAI2_TX_DATA_BIT3      0x31e
+                       IMX95_PAD_ENET2_RD2__NETCMIX_TOP_SAI2_MCLK              0x31e
+               >;
+       };
+
+       pinctrl_sai3: sai3grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO17__SAI3_MCLK                          0x31e
+                       IMX95_PAD_GPIO_IO16__SAI3_TX_BCLK                       0x31e
+                       IMX95_PAD_GPIO_IO26__SAI3_TX_SYNC                       0x31e
+                       IMX95_PAD_GPIO_IO20__SAI3_RX_DATA_BIT0                  0x31e
+                       IMX95_PAD_GPIO_IO19__SAI3_TX_DATA_BIT0                  0x31e
+               >;
+       };
+
+       pinctrl_spdif: spdifgrp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO22__SPDIF_IN                           0x3fe
+                       IMX95_PAD_GPIO_IO23__SPDIF_OUT                          0x3fe
+               >;
+       };
+
+       pinctrl_tpm3: tpm3grp {
+               fsl,pins = <
+                       IMX95_PAD_CCM_CLKO2__GPIO3_IO_BIT27                     0x51e
+               >;
+       };
+
+       pinctrl_tpm6: tpm6grp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO08__TPM6_CH0                           0x51e
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       IMX95_PAD_UART1_RXD__AONMIX_TOP_LPUART1_RX              0x31e
+                       IMX95_PAD_UART1_TXD__AONMIX_TOP_LPUART1_TX              0x31e
+               >;
+       };
+
+       pinctrl_uart5: uart5grp {
+               fsl,pins = <
+                       IMX95_PAD_DAP_TDO_TRACESWO__LPUART5_TX                  0x31e
+                       IMX95_PAD_DAP_TDI__LPUART5_RX                           0x31e
+                       IMX95_PAD_DAP_TMS_SWDIO__LPUART5_RTS_B                  0x31e
+                       IMX95_PAD_DAP_TCLK_SWCLK__LPUART5_CTS_B                 0x31e
+               >;
+       };
+
+       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_gpio: usdhc2gpiogrp {
+               fsl,pins = <
+                       IMX95_PAD_SD2_CD_B__GPIO3_IO_BIT0                       0x31e
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       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_100mhz: usdhc2-100mhzgrp {
+               fsl,pins = <
+                       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_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
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       IMX95_PAD_SD3_CLK__USDHC3_CLK                           0x158e
+                       IMX95_PAD_SD3_CMD__USDHC3_CMD                           0x138e
+                       IMX95_PAD_SD3_DATA0__USDHC3_DATA0                       0x138e
+                       IMX95_PAD_SD3_DATA1__USDHC3_DATA1                       0x138e
+                       IMX95_PAD_SD3_DATA2__USDHC3_DATA2                       0x138e
+                       IMX95_PAD_SD3_DATA3__USDHC3_DATA3                       0x138e
+               >;
+       };
+
+       pinctrl_usdhc3_pwrseq: usdhc3pwrseqgrp {
+               fsl,pins = <
+                       IMX95_PAD_XSPI1_SCLK__GPIO5_IO_BIT9                     0x31e
+               >;
+       };
+
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       IMX95_PAD_SD3_CLK__USDHC3_CLK                           0x158e
+                       IMX95_PAD_SD3_CMD__USDHC3_CMD                           0x138e
+                       IMX95_PAD_SD3_DATA0__USDHC3_DATA0                       0x138e
+                       IMX95_PAD_SD3_DATA1__USDHC3_DATA1                       0x138e
+                       IMX95_PAD_SD3_DATA2__USDHC3_DATA2                       0x138e
+                       IMX95_PAD_SD3_DATA3__USDHC3_DATA3                       0x138e
+               >;
+       };
+
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       IMX95_PAD_SD3_CLK__USDHC3_CLK                           0x15fe
+                       IMX95_PAD_SD3_CMD__USDHC3_CMD                           0x13fe
+                       IMX95_PAD_SD3_DATA0__USDHC3_DATA0                       0x13fe
+                       IMX95_PAD_SD3_DATA1__USDHC3_DATA1                       0x13fe
+                       IMX95_PAD_SD3_DATA2__USDHC3_DATA2                       0x13fe
+                       IMX95_PAD_SD3_DATA3__USDHC3_DATA3                       0x13fe
+               >;
+       };
+};
+
+&scmi_misc {
+       nxp,ctrl-ids = <BRD_SM_CTRL_SD3_WAKE            1>,
+                      <BRD_SM_CTRL_PCIE1_WAKE          1>,
+                      <BRD_SM_CTRL_BT_WAKE             1>,
+                      <BRD_SM_CTRL_PCIE2_WAKE          1>,
+                      <BRD_SM_CTRL_BUTTON              1>;
+};
+
+&thermal_zones {
+       a55-thermal {
+               cooling-maps {
+                       map1 {
+                               cooling-device = <&fan0 0 1>;
+                               trip = <&atrip2>;
+                       };
+
+                       map2 {
+                               cooling-device = <&fan0 1 2>;
+                               trip = <&atrip3>;
+                       };
+
+                       map3 {
+                               cooling-device = <&fan0 2 3>;
+                               trip = <&atrip4>;
+                       };
+               };
+
+               trips {
+                       atrip2: trip2 {
+                               hysteresis = <2000>;
+                               temperature = <55000>;
+                               type = "active";
+                       };
+
+                       atrip3: trip3 {
+                               hysteresis = <2000>;
+                               temperature = <65000>;
+                               type = "active";
+                       };
+
+                       atrip4: trip4 {
+                               hysteresis = <2000>;
+                               temperature = <75000>;
+                               type = "active";
+                       };
+               };
+       };
+
+       pf09-thermal {
+               polling-delay = <2000>;
+               polling-delay-passive = <250>;
+               thermal-sensors = <&scmi_sensor 2>;
+
+               trips {
+                       pf09_alert: trip0 {
+                               hysteresis = <2000>;
+                               temperature = <140000>;
+                               type = "passive";
+                       };
+
+                       pf09_crit: trip1 {
+                               hysteresis = <2000>;
+                               temperature = <155000>;
+                               type = "critical";
+                       };
+               };
+       };
+
+       pf53arm-thermal {
+               polling-delay = <2000>;
+               polling-delay-passive = <250>;
+               thermal-sensors = <&scmi_sensor 4>;
+
+               cooling-maps {
+                       map0 {
+                               cooling-device = <&A55_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                <&A55_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                <&A55_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                <&A55_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                <&A55_4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                <&A55_5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               trip = <&pf5301_alert>;
+                       };
+               };
+
+               trips {
+                       pf5301_alert: trip0 {
+                               hysteresis = <2000>;
+                               temperature = <140000>;
+                               type = "passive";
+                       };
+
+                       pf5301_crit: trip1 {
+                               hysteresis = <2000>;
+                               temperature = <155000>;
+                               type = "critical";
+                       };
+               };
+       };
+
+       pf53soc-thermal {
+               polling-delay = <2000>;
+               polling-delay-passive = <250>;
+               thermal-sensors = <&scmi_sensor 3>;
+
+               trips {
+                       pf5302_alert: trip0 {
+                               hysteresis = <2000>;
+                               temperature = <140000>;
+                               type = "passive";
+                       };
+
+                       pf5302_crit: trip1 {
+                               hysteresis = <2000>;
+                               temperature = <155000>;
+                               type = "critical";
+                       };
+               };
+       };
+};
+
+&tpm3 {
+       pinctrl-0 = <&pinctrl_tpm3>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&tpm6 {
+       pinctrl-0 = <&pinctrl_tpm6>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&usb3 {
+       status = "okay";
+};
+
+&usb3_dwc3 {
+       adp-disable;
+       dr_mode = "otg";
+       hnp-disable;
+       role-switch-default-mode = "peripheral";
+       srp-disable;
+       usb-role-switch;
+       snps,dis-u1-entry-quirk;
+       snps,dis-u2-entry-quirk;
+       status = "okay";
+
+       port {
+               usb3_data_hs: endpoint {
+                       remote-endpoint = <&typec_con_hs>;
+               };
+       };
+};
+
+&usb3_phy {
+       orientation-switch;
+       fsl,phy-tx-preemp-amp-tune-microamp = <600>;
+       status = "okay";
+
+       port {
+               usb3_data_ss: endpoint {
+                       remote-endpoint = <&typec_con_ss>;
+               };
+       };
+};
+
+&usdhc1 {
+       bus-width = <8>;
+       non-removable;
+       no-sd;
+       no-sdio;
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       pinctrl-3 = <&pinctrl_usdhc1>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       fsl,tuning-step = <1>;
+       status = "okay";
+};
+
+&usdhc2 {
+       bus-width = <4>;
+       cd-gpios = <&gpio3 00 GPIO_ACTIVE_LOW>;
+       pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-3 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       vmmc-supply = <&reg_usdhc2_vmmc>;
+       fsl,tuning-step = <1>;
+       status = "okay";
+};
+
+&usdhc3 {
+       bus-width = <4>;
+       keep-power-in-suspend;
+       mmc-pwrseq = <&usdhc3_pwrseq>;
+       non-removable;
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       pinctrl-3 = <&pinctrl_usdhc3>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       vmmc-supply = <&reg_usdhc3_vmmc>;
+       wakeup-source;
+       status = "okay";
+};
+
+&wdog3 {
+       status = "okay";
+};
+
+&xcvr {
+       clocks = <&scmi_clk IMX95_CLK_BUSWAKEUP>,
+                <&scmi_clk IMX95_CLK_SPDIF>,
+                <&dummy>,
+                <&scmi_clk IMX95_CLK_AUDIOXCVR>,
+                <&scmi_clk IMX95_CLK_AUDIOPLL1>,
+                <&scmi_clk IMX95_CLK_AUDIOPLL2>;
+       clock-names = "ipg", "phy", "spba", "pll_ipg", "pll8k", "pll11k";
+       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_SPDIF>,
+                         <&scmi_clk IMX95_CLK_AUDIOXCVR>;
+       assigned-clock-parents = <0>, <0>, <0>, <0>,
+                                <&scmi_clk IMX95_CLK_AUDIOPLL1>,
+                                <&scmi_clk IMX95_CLK_SYSPLL1_PFD1_DIV2>;
+       assigned-clock-rates = <3932160000>, <3612672000>,
+                              <393216000>, <361267200>,
+                              <12288000>, <0>;
+       #sound-dai-cells = <0>;
+       pinctrl-0 = <&pinctrl_spdif>;
+       pinctrl-names = "default";
+       status = "okay";
+};
index 8bc066c..25ac331 100644 (file)
@@ -6,6 +6,7 @@
 /dts-v1/;
 
 #include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/usb/pd.h>
 #include "imx95.dtsi"
 
 #define FALLING_EDGE                   1
                interrupt-parent = <&gpio5>;
                interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
        };
+
+       ptn5110: tcpc@50 {
+               compatible = "nxp,ptn5110", "tcpci";
+               reg = <0x50>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_typec>;
+               interrupt-parent = <&gpio5>;
+               interrupts = <14 IRQ_TYPE_LEVEL_LOW>;
+
+               typec_con: connector {
+                       compatible = "usb-c-connector";
+                       label = "USB-C";
+                       power-role = "dual";
+                       data-role = "dual";
+                       try-power-role = "sink";
+                       source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
+                       sink-pdos = <PDO_FIXED(5000, 0, PDO_FIXED_USB_COMM)>;
+                       op-sink-microwatt = <0>;
+                       self-powered;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       typec_con_hs: endpoint {
+                                               remote-endpoint = <&usb3_data_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       typec_con_ss: endpoint {
+                                               remote-endpoint = <&usb3_data_ss>;
+                                       };
+                               };
+                       };
+               };
+       };
 };
 
 &lpuart1 {
        status = "okay";
 };
 
+&usb3 {
+       status = "okay";
+};
+
+&usb3_dwc3 {
+       dr_mode = "otg";
+       hnp-disable;
+       srp-disable;
+       adp-disable;
+       usb-role-switch;
+       role-switch-default-mode = "peripheral";
+       snps,dis-u1-entry-quirk;
+       snps,dis-u2-entry-quirk;
+       status = "okay";
+
+       port {
+               usb3_data_hs: endpoint {
+                       remote-endpoint = <&typec_con_hs>;
+               };
+       };
+};
+
+&usb3_phy {
+       fsl,phy-tx-preemp-amp-tune-microamp = <600>;
+       orientation-switch;
+       status = "okay";
+
+       port {
+               usb3_data_ss: endpoint {
+                       remote-endpoint = <&typec_con_ss>;
+               };
+       };
+};
+
 &usdhc1 {
        pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
        pinctrl-0 = <&pinctrl_usdhc1>;
                >;
        };
 
+       pinctrl_typec: typecgrp {
+               fsl,pins = <
+                       IMX95_PAD_GPIO_IO34__GPIO5_IO_BIT14                     0x31e
+               >;
+       };
+
        pinctrl_usdhc2_gpio: usdhc2gpiogrp {
                fsl,pins = <
                        IMX95_PAD_SD2_CD_B__GPIO3_IO_BIT0               0x31e
index 6b8470c..59f057b 100644 (file)
                clock-output-names = "sai5_mclk";
        };
 
+       clk_sys100m: clock-sys100m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <100000000>;
+               clock-output-names = "clk_sys100m";
+       };
+
        osc_24m: clock-24m {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                                status = "disabled";
                        };
 
+                       i3c2: i3c@42520000 {
+                               compatible = "silvaco,i3c-master-v1";
+                               reg = <0x42520000 0x10000>;
+                               interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <3>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX95_CLK_BUSAON>,
+                                        <&scmi_clk IMX95_CLK_I3C2>,
+                                        <&scmi_clk IMX95_CLK_I3C2SLOW>;
+                               clock-names = "pclk", "fast_clk", "slow_clk";
+                               status = "disabled";
+                       };
+
                        lpi2c3: i2c@42530000 {
                                compatible = "fsl,imx95-lpi2c", "fsl,imx7ulp-lpi2c";
                                reg = <0x42530000 0x10000>;
                                status = "disabled";
                        };
 
+                       i3c1: i3c@44330000 {
+                               compatible = "silvaco,i3c-master-v1";
+                               reg = <0x44330000 0x10000>;
+                               interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <3>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX95_CLK_BUSAON>,
+                                        <&scmi_clk IMX95_CLK_I3C1>,
+                                        <&scmi_clk IMX95_CLK_I3C1SLOW>;
+                               clock-names = "pclk", "fast_clk", "slow_clk";
+                               status = "disabled";
+                       };
+
                        lpi2c1: i2c@44340000 {
                                compatible = "fsl,imx95-lpi2c", "fsl,imx7ulp-lpi2c";
                                reg = <0x44340000 0x10000>;
                                             <GIC_SPI 201 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&scmi_clk IMX95_CLK_ADC>;
                                clock-names = "ipg";
+                               #io-channel-cells = <1>;
                                status = "disabled";
                        };
 
                        };
                };
 
+               usb3: usb@4c010010 {
+                       compatible = "fsl,imx95-dwc3", "fsl,imx8mp-dwc3";
+                       reg = <0x0 0x4c010010 0x0 0x04>,
+                             <0x0 0x4c1f0000 0x0 0x20>;
+                       clocks = <&scmi_clk IMX95_CLK_HSIO>,
+                                <&scmi_clk IMX95_CLK_32K>;
+                       clock-names = "hsio", "suspend";
+                       interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+                       power-domains = <&scmi_devpd IMX95_PD_HSIO_TOP>;
+                       dma-ranges = <0x0 0x0 0x0 0x0 0x10 0x0>;
+                       status = "disabled";
+
+                       usb3_dwc3: usb@4c100000 {
+                               compatible = "snps,dwc3";
+                               reg = <0x0 0x4c100000 0x0 0x10000>;
+                               clocks = <&scmi_clk IMX95_CLK_HSIO>,
+                                        <&scmi_clk IMX95_CLK_24M>,
+                                        <&scmi_clk IMX95_CLK_32K>;
+                               clock-names = "bus_early", "ref", "suspend";
+                               interrupts = <GIC_SPI 175 IRQ_TYPE_LEVEL_HIGH>;
+                               phys = <&usb3_phy>, <&usb3_phy>;
+                               phy-names = "usb2-phy", "usb3-phy";
+                               snps,gfladj-refclk-lpm-sel-quirk;
+                               snps,parkmode-disable-ss-quirk;
+                               iommus = <&smmu 0xe>;
+                       };
+               };
+
+               hsio_blk_ctl: syscon@4c0100c0 {
+                       compatible = "nxp,imx95-hsio-blk-ctl", "syscon";
+                       reg = <0x0 0x4c0100c0 0x0 0x1>;
+                       #clock-cells = <1>;
+                       clocks = <&clk_sys100m>;
+                       power-domains = <&scmi_devpd IMX95_PD_HSIO_TOP>;
+               };
+
+               usb3_phy: phy@4c1f0040 {
+                       compatible = "fsl,imx95-usb-phy", "fsl,imx8mp-usb-phy";
+                       reg = <0x0 0x4c1f0040 0x0 0x40>,
+                             <0x0 0x4c1fc000 0x0 0x100>;
+                       clocks = <&scmi_clk IMX95_CLK_HSIO>;
+                       clock-names = "phy";
+                       #phy-cells = <0>;
+                       power-domains = <&scmi_devpd IMX95_PD_HSIO_TOP>;
+                       status = "disabled";
+               };
+
                pcie0: pcie@4c300000 {
                        compatible = "fsl,imx95-pcie";
                        reg = <0 0x4c300000 0 0x10000>,
                              <0 0x60100000 0 0xfe00000>,
                              <0 0x4c360000 0 0x10000>,
-                             <0 0x4c340000 0 0x2000>;
+                             <0 0x4c340000 0 0x4000>;
                        reg-names = "dbi", "config", "atu", "app";
                        ranges = <0x81000000 0x0 0x00000000 0x0 0x6ff00000 0 0x00100000>,
                                 <0x82000000 0x0 0x10000000 0x9 0x10000000 0 0x10000000>;
                        clocks = <&scmi_clk IMX95_CLK_HSIO>,
                                 <&scmi_clk IMX95_CLK_HSIOPLL>,
                                 <&scmi_clk IMX95_CLK_HSIOPLL_VCO>,
-                                <&scmi_clk IMX95_CLK_HSIOPCIEAUX>;
-                       clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux";
+                                <&scmi_clk IMX95_CLK_HSIOPCIEAUX>,
+                                <&hsio_blk_ctl 0>;
+                       clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux", "ref";
                        assigned-clocks =<&scmi_clk IMX95_CLK_HSIOPLL_VCO>,
                                         <&scmi_clk IMX95_CLK_HSIOPLL>,
                                         <&scmi_clk IMX95_CLK_HSIOPCIEAUX>;
                        assigned-clock-parents = <0>, <0>,
                                                 <&scmi_clk IMX95_CLK_SYSPLL1_PFD1_DIV2>;
                        power-domains = <&scmi_devpd IMX95_PD_HSIO_TOP>;
+                       /* pcie0's Devid(BIT[7:6]) is 0x00, stream id(BIT[5:0]) is 0x10~0x17 */
+                       msi-map = <0x0 &its 0x10 0x1>,
+                                 <0x100 &its 0x11 0x7>;
+                       iommu-map = <0x000 &smmu 0x10 0x1>,
+                                   <0x100 &smmu 0x11 0x7>;
+                       iommu-map-mask = <0x1ff>;
                        fsl,max-link-speed = <3>;
                        status = "disabled";
                };
                        reg = <0 0x4c300000 0 0x10000>,
                              <0 0x4c360000 0 0x1000>,
                              <0 0x4c320000 0 0x1000>,
-                             <0 0x4c340000 0 0x2000>,
+                             <0 0x4c340000 0 0x4000>,
                              <0 0x4c370000 0 0x10000>,
                              <0x9 0 1 0>;
                        reg-names = "dbi","atu", "dbi2", "app", "dma", "addr_space";
                        reg = <0 0x4c380000 0 0x10000>,
                              <8 0x80100000 0 0xfe00000>,
                              <0 0x4c3e0000 0 0x10000>,
-                             <0 0x4c3c0000 0 0x2000>;
+                             <0 0x4c3c0000 0 0x4000>;
                        reg-names = "dbi", "config", "atu", "app";
                        ranges = <0x81000000 0 0x00000000 0x8 0x8ff00000 0 0x00100000>,
                                 <0x82000000 0 0x10000000 0xa 0x10000000 0 0x10000000>;
                        clocks = <&scmi_clk IMX95_CLK_HSIO>,
                                 <&scmi_clk IMX95_CLK_HSIOPLL>,
                                 <&scmi_clk IMX95_CLK_HSIOPLL_VCO>,
-                                <&scmi_clk IMX95_CLK_HSIOPCIEAUX>;
-                       clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux";
+                                <&scmi_clk IMX95_CLK_HSIOPCIEAUX>,
+                                <&hsio_blk_ctl 0>;
+                       clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux", "ref";
                        assigned-clocks =<&scmi_clk IMX95_CLK_HSIOPLL_VCO>,
                                         <&scmi_clk IMX95_CLK_HSIOPLL>,
                                         <&scmi_clk IMX95_CLK_HSIOPCIEAUX>;
                        assigned-clock-parents = <0>, <0>,
                                                 <&scmi_clk IMX95_CLK_SYSPLL1_PFD1_DIV2>;
                        power-domains = <&scmi_devpd IMX95_PD_HSIO_TOP>;
+                       /* pcie1's Devid(BIT[7:6]) is 0x10, stream id(BIT[5:0]) is 0x18~0x1f */
+                       msi-map = <0x0 &its 0x98 0x1>,
+                                 <0x100 &its 0x99 0x7>;
+                       msi-map-mask = <0x1ff>;
+                       /* smmu have not Devid(BIT[7:6]) */
+                       iommu-map = <0x000 &smmu 0x18 0x1>,
+                                   <0x100 &smmu 0x19 0x7>;
+                       iommu-map-mask = <0x1ff>;
                        fsl,max-link-speed = <3>;
                        status = "disabled";
                };
                        reg = <0 0x4c380000 0 0x10000>,
                              <0 0x4c3e0000 0 0x1000>,
                              <0 0x4c3a0000 0 0x1000>,
-                             <0 0x4c3c0000 0 0x2000>,
+                             <0 0x4c3c0000 0 0x4000>,
                              <0 0x4c3f0000 0 0x10000>,
                              <0xa 0 1 0>;
                        reg-names = "dbi", "atu", "dbi2", "app", "dma", "addr_space";
index 58e3865..7ee1228 100644 (file)
 
        sound {
                compatible = "fsl,imx-audio-tlv320aic32x4";
-               model = "imx-audio-tlv320aic32x4";
+               model = "tqm-tlv320aic32";
                ssi-controller = <&sai3>;
                audio-codec = <&tlv320aic3x04>;
        };
index 276d168..c4b5663 100644 (file)
                stdout-path = &lpuart1;
        };
 
+       /* Non-controllable PCIe reference clock generator */
+       pcie_refclk: clock-pcie-ref {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <100000000>;
+       };
+
        gpio-keys {
                compatible = "gpio-keys";
                pinctrl-names = "default";
        status = "okay";
 };
 
+&hsio_phy {
+       fsl,hsio-cfg = "pciea-x2-pcieb";
+       fsl,refclk-pad-mode = "input";
+       status = "okay";
+};
+
 &i2c1 {
        tlv320aic3x04: audio-codec@18 {
                compatible = "ti,tlv320aic32x4";
                          "", "", "", "";
 };
 
-/* TODO: Mini-PCIe */
+&pcieb {
+       phys = <&hsio_phy 0 PHY_TYPE_PCIE 0>;
+       phy-names = "pcie-phy";
+       pinctrl-0 = <&pinctrl_pcieb>;
+       pinctrl-names = "default";
+       reset-gpios = <&lsio_gpio4 0 GPIO_ACTIVE_LOW>;
+       vpcie-supply = <&reg_pcie_1v5>;
+       status = "okay";
+};
 
 &sai1 {
        assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
                fsl,pins = <IMX8QXP_USDHC1_RESET_B_LSIO_GPIO4_IO19      0x00000020>;
        };
 
-       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_pcieb: pciebgrp {
+               fsl,pins = <IMX8QXP_PCIE_CTRL0_PERST_B_LSIO_GPIO4_IO00          0x06000041>,
+                          <IMX8QXP_PCIE_CTRL0_CLKREQ_B_HSIO_PCIE0_CLKREQ_B     0x06000041>,
+                          <IMX8QXP_PCIE_CTRL0_WAKE_B_LSIO_GPIO4_IO02           0x04000041>;
        };
 
        pinctrl_reg_pcie_1v5: regpcie1v5grp {
index 7be430b..ea1456d 100644 (file)
                        };
                };
 
+               edma0: dma-controller@40144000 {
+                       compatible = "nxp,s32g2-edma";
+                       reg = <0x40144000 0x24000>,
+                             <0x4012c000 0x3000>,
+                             <0x40130000 0x3000>;
+                       #dma-cells = <2>;
+                       dma-channels = <32>;
+                       interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tx-0-15",
+                                         "tx-16-31",
+                                         "err";
+                       clocks = <&clks 63>, <&clks 64>;
+                       clock-names = "dmamux0", "dmamux1";
+               };
+
+               can0: can@401b4000 {
+                       compatible = "nxp,s32g2-flexcan";
+                       reg = <0x401b4000 0xa000>;
+                       interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mb-0", "state", "berr", "mb-1";
+                       clocks = <&clks 9>, <&clks 11>;
+                       clock-names = "ipg", "per";
+                       status = "disabled";
+               };
+
+               can1: can@401be000 {
+                       compatible = "nxp,s32g2-flexcan";
+                       reg = <0x401be000 0xa000>;
+                       interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mb-0", "state", "berr", "mb-1";
+                       clocks = <&clks 9>, <&clks 11>;
+                       clock-names = "ipg", "per";
+                       status = "disabled";
+               };
+
                uart0: serial@401c8000 {
                        compatible = "nxp,s32g2-linflexuart",
                                     "fsl,s32v234-linflexuart";
                        status = "disabled";
                };
 
+               i2c0: i2c@401e4000 {
+                       compatible = "nxp,s32g2-i2c";
+                       reg = <0x401e4000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 40>;
+                       clock-names = "ipg";
+                       status = "disabled";
+               };
+
+               i2c1: i2c@401e8000 {
+                       compatible = "nxp,s32g2-i2c";
+                       reg = <0x401e8000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 40>;
+                       clock-names = "ipg";
+                       status = "disabled";
+               };
+
+               i2c2: i2c@401ec000 {
+                       compatible = "nxp,s32g2-i2c";
+                       reg = <0x401ec000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 40>;
+                       clock-names = "ipg";
+                       status = "disabled";
+               };
+
+               edma1: dma-controller@40244000 {
+                       compatible = "nxp,s32g2-edma";
+                       reg = <0x40244000 0x24000>,
+                             <0x4022c000 0x3000>,
+                             <0x40230000 0x3000>;
+                       #dma-cells = <2>;
+                       dma-channels = <32>;
+                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tx-0-15",
+                                         "tx-16-31",
+                                         "err";
+                       clocks = <&clks 63>, <&clks 64>;
+                       clock-names = "dmamux0", "dmamux1";
+               };
+
+               can2: can@402a8000 {
+                       compatible = "nxp,s32g2-flexcan";
+                       reg = <0x402a8000 0xa000>;
+                       interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mb-0", "state", "berr", "mb-1";
+                       clocks = <&clks 9>, <&clks 11>;
+                       clock-names = "ipg", "per";
+                       status = "disabled";
+               };
+
+               can3: can@402b2000 {
+                       compatible = "nxp,s32g2-flexcan";
+                       reg = <0x402b2000 0xa000>;
+                       interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mb-0", "state", "berr", "mb-1";
+                       clocks = <&clks 9>, <&clks 11>;
+                       clock-names = "ipg", "per";
+                       status = "disabled";
+               };
+
                uart2: serial@402bc000 {
                        compatible = "nxp,s32g2-linflexuart",
                                     "fsl,s32v234-linflexuart";
                        status = "disabled";
                };
 
+               i2c3: i2c@402d8000 {
+                       compatible = "nxp,s32g2-i2c";
+                       reg = <0x402d8000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 40>;
+                       clock-names = "ipg";
+                       status = "disabled";
+               };
+
+               i2c4: i2c@402dc000 {
+                       compatible = "nxp,s32g2-i2c";
+                       reg = <0x402dc000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 40>;
+                       clock-names = "ipg";
+                       status = "disabled";
+               };
+
                usdhc0: mmc@402f0000 {
                        compatible = "nxp,s32g2-usdhc";
                        reg = <0x402f0000 0x1000>;
index b9a119e..c4a195d 100644 (file)
@@ -7,6 +7,7 @@
 /dts-v1/;
 
 #include "s32g2.dtsi"
+#include "s32gxxxa-evb.dtsi"
 
 / {
        model = "NXP S32G2 Evaluation Board (S32G-VNP-EVB)";
index aaa61a8..b5ba516 100644 (file)
@@ -7,6 +7,7 @@
 /dts-v1/;
 
 #include "s32g2.dtsi"
+#include "s32gxxxa-rdb.dtsi"
 
 / {
        model = "NXP S32G2 Reference Design Board 2 (S32G-VNP-RDB2)";
index 6c572ff..991dbfb 100644 (file)
                        };
                };
 
+               edma0: dma-controller@40144000 {
+                       compatible = "nxp,s32g3-edma", "nxp,s32g2-edma";
+                       reg = <0x40144000 0x24000>,
+                             <0x4012c000 0x3000>,
+                             <0x40130000 0x3000>;
+                       #dma-cells = <2>;
+                       dma-channels = <32>;
+                       interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tx-0-15",
+                                         "tx-16-31",
+                                         "err";
+                       clocks = <&clks 63>, <&clks 64>;
+                       clock-names = "dmamux0", "dmamux1";
+               };
+
+               can0: can@401b4000 {
+                       compatible = "nxp,s32g3-flexcan",
+                                          "nxp,s32g2-flexcan";
+                       reg = <0x401b4000 0xa000>;
+                       interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mb-0", "state", "berr", "mb-1";
+                       clocks = <&clks 9>, <&clks 11>;
+                       clock-names = "ipg", "per";
+                       status = "disabled";
+               };
+
+               can1: can@401be000 {
+                       compatible = "nxp,s32g3-flexcan",
+                                          "nxp,s32g2-flexcan";
+                       reg = <0x401be000 0xa000>;
+                       interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mb-0", "state", "berr", "mb-1";
+                       clocks = <&clks 9>, <&clks 11>;
+                       clock-names = "ipg", "per";
+                       status = "disabled";
+               };
+
                uart0: serial@401c8000 {
                        compatible = "nxp,s32g3-linflexuart",
                                     "fsl,s32v234-linflexuart";
                        status = "disabled";
                };
 
+               i2c0: i2c@401e4000 {
+                       compatible = "nxp,s32g3-i2c",
+                                    "nxp,s32g2-i2c";
+                       reg = <0x401e4000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 40>;
+                       clock-names = "ipg";
+                       status = "disabled";
+               };
+
+               i2c1: i2c@401e8000 {
+                       compatible = "nxp,s32g3-i2c",
+                                    "nxp,s32g2-i2c";
+                       reg = <0x401e8000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 40>;
+                       clock-names = "ipg";
+                       status = "disabled";
+               };
+
+               i2c2: i2c@401ec000 {
+                       compatible = "nxp,s32g3-i2c",
+                                    "nxp,s32g2-i2c";
+                       reg = <0x401ec000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 40>;
+                       clock-names = "ipg";
+                       status = "disabled";
+               };
+
+               edma1: dma-controller@40244000 {
+                       compatible = "nxp,s32g3-edma", "nxp,s32g2-edma";
+                       reg = <0x40244000 0x24000>,
+                             <0x4022c000 0x3000>,
+                             <0x40230000 0x3000>;
+                       #dma-cells = <2>;
+                       dma-channels = <32>;
+                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tx-0-15",
+                                         "tx-16-31",
+                                         "err";
+                       clocks = <&clks 63>, <&clks 64>;
+                       clock-names = "dmamux0", "dmamux1";
+               };
+
+               can2: can@402a8000 {
+                       compatible = "nxp,s32g3-flexcan",
+                                          "nxp,s32g2-flexcan";
+                       reg = <0x402a8000 0xa000>;
+                       interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mb-0", "state", "berr", "mb-1";
+                       clocks = <&clks 9>, <&clks 11>;
+                       clock-names = "ipg", "per";
+                       status = "disabled";
+               };
+
+               can3: can@402b2000 {
+                       compatible = "nxp,s32g3-flexcan",
+                                          "nxp,s32g2-flexcan";
+                       reg = <0x402b2000 0xa000>;
+                       interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mb-0", "state", "berr", "mb-1";
+                       clocks = <&clks 9>, <&clks 11>;
+                       clock-names = "ipg", "per";
+                       status = "disabled";
+               };
+
                uart2: serial@402bc000 {
                        compatible = "nxp,s32g3-linflexuart",
                                     "fsl,s32v234-linflexuart";
                        status = "disabled";
                };
 
+               i2c3: i2c@402d8000 {
+                       compatible = "nxp,s32g3-i2c",
+                                    "nxp,s32g2-i2c";
+                       reg = <0x402d8000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 40>;
+                       clock-names = "ipg";
+                       status = "disabled";
+               };
+
+               i2c4: i2c@402dc000 {
+                       compatible = "nxp,s32g3-i2c",
+                                    "nxp,s32g2-i2c";
+                       reg = <0x402dc000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clks 40>;
+                       clock-names = "ipg";
+                       status = "disabled";
+               };
+
                usdhc0: mmc@402f0000 {
                        compatible = "nxp,s32g3-usdhc",
                                     "nxp,s32g2-usdhc";
index 828e353..802f543 100644 (file)
@@ -8,6 +8,7 @@
 /dts-v1/;
 
 #include "s32g3.dtsi"
+#include "s32gxxxa-rdb.dtsi"
 
 / {
        model = "NXP S32G3 Reference Design Board 3 (S32G-VNP-RDB3)";
        status = "okay";
 };
 
+&i2c4 {
+       current-sensor@40 {
+               compatible = "ti,ina231";
+               reg = <0x40>;
+               shunt-resistor = <1000>;
+       };
+};
+
 &usdhc0 {
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc0>;
diff --git a/src/arm64/freescale/s32gxxxa-evb.dtsi b/src/arm64/freescale/s32gxxxa-evb.dtsi
new file mode 100644 (file)
index 0000000..d26af0f
--- /dev/null
@@ -0,0 +1,222 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright 2024 NXP
+ *
+ * Authors: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
+ *          Ghennadi Procopciuc <ghennadi.procopciuc@oss.nxp.com>
+ *          Larisa Grigore <larisa.grigore@nxp.com>
+ */
+
+&pinctrl {
+       can0_pins: can0-pins {
+               can0-grp0 {
+                       pinmux = <0x2c1>;
+                       output-enable;
+                       slew-rate = <133>;
+               };
+
+               can0-grp1 {
+                       pinmux = <0x2b0>;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               can0-grp2 {
+                       pinmux = <0x2012>;
+               };
+       };
+
+       can2_pins: can2-pins {
+               can2-grp0 {
+                       pinmux = <0x1b2>;
+                       output-enable;
+                       slew-rate = <133>;
+               };
+
+               can2-grp1 {
+                       pinmux = <0x1c0>;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               can2-grp2 {
+                       pinmux = <0x2782>;
+               };
+       };
+
+       can3_pins: can3-pins {
+               can3-grp0 {
+                       pinmux = <0x192>;
+                       output-enable;
+                       slew-rate = <133>;
+               };
+
+               can3-grp1 {
+                       pinmux = <0x1a0>;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               can3-grp2 {
+                       pinmux = <0x2792>;
+               };
+       };
+
+       i2c0_pins: i2c0-pins {
+               i2c0-grp0 {
+                       pinmux = <0x101>, <0x111>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c0-grp1 {
+                       pinmux = <0x2352>, <0x2362>;
+               };
+       };
+
+       i2c0_gpio_pins: i2c0-gpio-pins {
+               i2c0-gpio-grp0 {
+                       pinmux = <0x100>, <0x110>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c0-gpio-grp1 {
+                       pinmux = <0x2350>, <0x2360>;
+               };
+       };
+
+       i2c1_pins: i2c1-pins {
+               i2c1-grp0 {
+                       pinmux = <0x131>, <0x141>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c1-grp1 {
+                       pinmux = <0x2cd2>, <0x2ce2>;
+               };
+       };
+
+       i2c1_gpio_pins: i2c1-gpio-pins {
+               i2c1-gpio-grp0 {
+                       pinmux = <0x130>, <0x140>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c1-gpio-grp1 {
+                       pinmux = <0x2cd0>, <0x2ce0>;
+               };
+       };
+
+       i2c2_pins: i2c2-pins {
+               i2c2-grp0 {
+                       pinmux = <0x151>, <0x161>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c2-grp1 {
+                       pinmux = <0x2cf2>, <0x2d02>;
+               };
+       };
+
+       i2c2_gpio_pins: i2c2-gpio-pins {
+               i2c2-gpio-grp0 {
+                       pinmux = <0x150>, <0x160>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c2-gpio-grp1 {
+                       pinmux = <0x2cf0>, <0x2d00>;
+               };
+       };
+
+       i2c4_pins: i2c4-pins {
+               i2c4-grp0 {
+                       pinmux = <0x211>, <0x222>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c4-grp1 {
+                       pinmux = <0x2d43>, <0x2d33>;
+               };
+       };
+
+       i2c4_gpio_pins: i2c4-gpio-pins {
+               i2c4-gpio-grp0 {
+                       pinmux = <0x210>, <0x220>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c4-gpio-grp1 {
+                       pinmux = <0x2d40>, <0x2d30>;
+               };
+       };
+};
+
+&can0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&can0_pins>;
+       status = "okay";
+};
+
+&can2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&can2_pins>;
+       status = "okay";
+};
+
+&can3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&can3_pins>;
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-1 = <&i2c0_gpio_pins>;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&i2c1_pins>;
+       pinctrl-1 = <&i2c1_gpio_pins>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&i2c2_pins>;
+       pinctrl-1 = <&i2c2_gpio_pins>;
+       status = "okay";
+};
+
+&i2c4 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&i2c4_pins>;
+       pinctrl-1 = <&i2c4_gpio_pins>;
+       status = "okay";
+};
diff --git a/src/arm64/freescale/s32gxxxa-rdb.dtsi b/src/arm64/freescale/s32gxxxa-rdb.dtsi
new file mode 100644 (file)
index 0000000..ba53ec6
--- /dev/null
@@ -0,0 +1,170 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright 2024 NXP
+ *
+ * Authors: Ciprian Marian Costea <ciprianmarian.costea@oss.nxp.com>
+ *          Ghennadi Procopciuc <ghennadi.procopciuc@oss.nxp.com>
+ *          Larisa Grigore <larisa.grigore@nxp.com>
+ */
+
+&pinctrl {
+       can0_pins: can0-pins {
+               can0-grp0 {
+                       pinmux = <0x112>;
+                       output-enable;
+                       slew-rate = <133>;
+               };
+
+               can0-grp1 {
+                       pinmux = <0x120>;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               can0-grp2 {
+                       pinmux = <0x2013>;
+               };
+       };
+
+       can1_pins: can1-pins {
+               can1-grp0 {
+                       pinmux = <0x132>;
+                       output-enable;
+                       slew-rate = <133>;
+               };
+
+               can1-grp1 {
+                       pinmux = <0x140>;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               can1-grp2 {
+                       pinmux = <0x2772>;
+               };
+       };
+
+       i2c0_pins: i2c0-pins {
+               i2c0-grp0 {
+                       pinmux = <0x1f2>, <0x201>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c0-grp1 {
+                       pinmux = <0x2353>, <0x2363>;
+               };
+       };
+
+       i2c0_gpio_pins: i2c0-gpio-pins {
+               i2c0-gpio-grp0 {
+                       pinmux = <0x1f0>, <0x200>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c0-gpio-grp1 {
+                       pinmux = <0x2350>, <0x2360>;
+               };
+       };
+
+       i2c2_pins: i2c2-pins {
+               i2c2-grp0 {
+                       pinmux = <0x151>, <0x161>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c2-grp1 {
+                       pinmux = <0x2cf2>, <0x2d02>;
+               };
+       };
+
+       i2c2_gpio_pins: i2c2-gpio-pins {
+               i2c2-gpio-grp0 {
+                       pinmux = <0x2cf0>, <0x2d00>;
+               };
+
+               i2c2-gpio-grp1 {
+                       pinmux = <0x150>, <0x160>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+       };
+
+       i2c4_pins: i2c4-pins {
+               i2c4-grp0 {
+                       pinmux = <0x211>, <0x222>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c4-grp1 {
+                       pinmux = <0x2d43>, <0x2d33>;
+               };
+       };
+
+       i2c4_gpio_pins: i2c4-gpio-pins {
+               i2c4-gpio-grp0 {
+                       pinmux = <0x210>, <0x220>;
+                       drive-open-drain;
+                       output-enable;
+                       input-enable;
+                       slew-rate = <133>;
+               };
+
+               i2c4-gpio-grp1 {
+                       pinmux = <0x2d40>, <0x2d30>;
+               };
+       };
+};
+
+&can0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&can0_pins>;
+       status = "okay";
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&can1_pins>;
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-1 = <&i2c0_gpio_pins>;
+       status = "okay";
+
+       pcal6524: gpio-expander@22 {
+               compatible = "nxp,pcal6524";
+               reg = <0x22>;
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&i2c2_pins>;
+       pinctrl-1 = <&i2c2_gpio_pins>;
+       status = "okay";
+};
+
+&i2c4 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&i2c4_pins>;
+       pinctrl-1 = <&i2c4_gpio_pins>;
+       status = "okay";
+};
index 366912b..58693b7 100644 (file)
@@ -65,6 +65,7 @@
                spi-max-frequency = <66000000>;
                spi-tx-bus-width = <1>;
                spi-rx-bus-width = <4>;
+               vcc-supply = <&reg_1v8>;
 
                partitions {
                        compatible = "fixed-partitions";
@@ -74,8 +75,6 @@
        };
 };
 
-/* TODO GPU */
-
 &i2c1 {
        #address-cells = <1>;
        #size-cells = <0>;
        };
 };
 
+&jpegdec {
+       status = "okay";
+};
+
+&jpegenc {
+       status = "okay";
+};
+
+
 &mu_m0 {
        status = "okay";
 };
index 79a55a0..4c6a075 100644 (file)
@@ -17,6 +17,7 @@
                        clocks = <&crg_ctrl HI3660_PCLK>;
                        clock-names = "apb_pclk";
                        cpu = <&cpu0>;
+                       arm,coresight-loses-context-with-cpu;
 
                        out-ports {
                                port {
@@ -34,6 +35,7 @@
                        clocks = <&crg_ctrl HI3660_PCLK>;
                        clock-names = "apb_pclk";
                        cpu = <&cpu1>;
+                       arm,coresight-loses-context-with-cpu;
 
                        out-ports {
                                port {
@@ -51,6 +53,7 @@
                        clocks = <&crg_ctrl HI3660_PCLK>;
                        clock-names = "apb_pclk";
                        cpu = <&cpu2>;
+                       arm,coresight-loses-context-with-cpu;
 
                        out-ports {
                                port {
@@ -68,6 +71,7 @@
                        clocks = <&crg_ctrl HI3660_PCLK>;
                        clock-names = "apb_pclk";
                        cpu = <&cpu3>;
+                       arm,coresight-loses-context-with-cpu;
 
                        out-ports {
                                port {
                        clocks = <&crg_ctrl HI3660_PCLK>;
                        clock-names = "apb_pclk";
                        cpu = <&cpu4>;
+                       arm,coresight-loses-context-with-cpu;
 
                        out-ports {
                                port {
                        clocks = <&crg_ctrl HI3660_PCLK>;
                        clock-names = "apb_pclk";
                        cpu = <&cpu5>;
+                       arm,coresight-loses-context-with-cpu;
 
                        out-ports {
                                port {
                        clocks = <&crg_ctrl HI3660_PCLK>;
                        clock-names = "apb_pclk";
                        cpu = <&cpu6>;
+                       arm,coresight-loses-context-with-cpu;
 
                        out-ports {
                                port {
                        clocks = <&crg_ctrl HI3660_PCLK>;
                        clock-names = "apb_pclk";
                        cpu = <&cpu7>;
+                       arm,coresight-loses-context-with-cpu;
 
                        out-ports {
                                port {
index 75377c2..605f5be 100644 (file)
@@ -78,7 +78,7 @@
                #size-cells = <2>;
                ranges;
 
-               internal-regs@7f000000 {
+               bus@7f000000 {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        compatible = "simple-bus";
diff --git a/src/arm64/marvell/armada-371x.dtsi b/src/arm64/marvell/armada-371x.dtsi
deleted file mode 100644 (file)
index dc1182e..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Device Tree Include file for Marvell Armada 371x family of SoCs
- * (also named 88F3710)
- *
- * Copyright (C) 2016 Marvell
- *
- * Gregory CLEMENT <gregory.clement@free-electrons.com>
- *
- */
-
-#include "armada-37xx.dtsi"
-
-/ {
-       model = "Marvell Armada 3710 SoC";
-       compatible = "marvell,armada3710", "marvell,armada3700";
-};
index 0cfb384..bd4e61d 100644 (file)
@@ -18,7 +18,7 @@
 
 / {
        model = "Marvell Armada 3720 Development Board DB-88F3720-DDR3";
-       compatible = "marvell,armada-3720-db", "marvell,armada3720", "marvell,armada3700";
+       compatible = "marvell,armada-3720-db", "marvell,armada3720", "marvell,armada3710";
 
        chosen {
                stdout-path = "serial0:115200n8";
index 6715a19..5c4d8f3 100644 (file)
@@ -18,7 +18,7 @@
 / {
        model = "Globalscale Marvell ESPRESSOBin Board (eMMC)";
        compatible = "globalscale,espressobin-emmc", "globalscale,espressobin",
-                    "marvell,armada3720", "marvell,armada3700";
+                    "marvell,armada3720", "marvell,armada3710";
 };
 
 &sdhci0 {
index b3cc2b7..97a180c 100644 (file)
@@ -13,7 +13,7 @@
 / {
        model = "Globalscale Marvell ESPRESSOBin Ultra Board";
        compatible = "globalscale,espressobin-ultra", "globalscale,espressobin",
-                    "marvell,armada3720", "marvell,armada3700";
+                    "marvell,armada3720", "marvell,armada3710";
 
        aliases {
                /* ethernet1 is WAN port */
index 2a8aa39..75401ea 100644 (file)
@@ -19,7 +19,7 @@
        model = "Globalscale Marvell ESPRESSOBin Board V7 (eMMC)";
        compatible = "globalscale,espressobin-v7-emmc", "globalscale,espressobin-v7",
                     "globalscale,espressobin", "marvell,armada3720",
-                    "marvell,armada3700";
+                    "marvell,armada3710";
 
        aliases {
                /* ethernet1 is wan port */
index b03af87..48a7f50 100644 (file)
@@ -18,7 +18,7 @@
 / {
        model = "Globalscale Marvell ESPRESSOBin Board V7";
        compatible = "globalscale,espressobin-v7", "globalscale,espressobin",
-                    "marvell,armada3720", "marvell,armada3700";
+                    "marvell,armada3720", "marvell,armada3710";
 
        aliases {
                /* ethernet1 is wan port */
index c5a834b..1542d83 100644 (file)
@@ -16,5 +16,5 @@
 
 / {
        model = "Globalscale Marvell ESPRESSOBin Board";
-       compatible = "globalscale,espressobin", "marvell,armada3720", "marvell,armada3700";
+       compatible = "globalscale,espressobin", "marvell,armada3720", "marvell,armada3710";
 };
index 56930f2..9f4bafe 100644 (file)
@@ -7,7 +7,7 @@
 
 / {
        model = "GL.iNet GL-MV1000";
-       compatible = "glinet,gl-mv1000", "marvell,armada3720";
+       compatible = "glinet,gl-mv1000", "marvell,armada3720", "marvell,armada3710";
 
        aliases {
                led-boot = &led_power;
index 54453b0..f4d73c8 100644 (file)
@@ -14,7 +14,7 @@
 / {
        model = "CZ.NIC Turris Mox Board";
        compatible = "cznic,turris-mox", "marvell,armada3720",
-                    "marvell,armada3700";
+                    "marvell,armada3710";
 
        aliases {
                spi0 = &spi0;
index 3a9b690..2428208 100644 (file)
@@ -26,6 +26,8 @@
 
        leds {
                compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi_quad_pins>;
 
                led-power1 {
                        label = "udpu:green:power";
@@ -82,8 +84,6 @@
 
 &spi0 {
        status = "okay";
-       pinctrl-names = "default";
-       pinctrl-0 = <&spi_quad_pins>;
 
        flash@0 {
                compatible = "jedec,spi-nor";
        };
 };
 
+&spi_quad_pins {
+       function = "gpio";
+};
+
 &pinctrl_nb {
        i2c2_recovery_pins: i2c2-recovery-pins {
                groups = "i2c2";
index 02ae1e1..b99ac4c 100644 (file)
@@ -12,9 +12,6 @@
 #include "armada-37xx.dtsi"
 
 / {
-       model = "Marvell Armada 3720 SoC";
-       compatible = "marvell,armada3720", "marvell,armada3700";
-
        cpus {
                cpu1: cpu@1 {
                        device_type = "cpu";
index 9603223..75b0fdc 100644 (file)
@@ -11,8 +11,6 @@
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 
 / {
-       model = "Marvell Armada 37xx SoC";
-       compatible = "marvell,armada3700";
        interrupt-parent = <&gic>;
        #address-cells = <2>;
        #size-cells = <2>;
@@ -78,7 +76,7 @@
                #size-cells = <2>;
                ranges;
 
-               internal-regs@d0000000 {
+               bus@d0000000 {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        compatible = "simple-bus";
index 4e46326..570f901 100644 (file)
@@ -8,9 +8,3 @@
 
 #include "armada-ap806-dual.dtsi"
 #include "armada-70x0.dtsi"
-
-/ {
-       model = "Marvell Armada 7020";
-       compatible = "marvell,armada7020", "marvell,armada-ap806-dual",
-                    "marvell,armada-ap806";
-};
index 2f44071..710ac44 100644 (file)
@@ -9,12 +9,6 @@
 #include "armada-ap806-quad.dtsi"
 #include "armada-70x0.dtsi"
 
-/ {
-       model = "Marvell Armada 7040";
-       compatible = "marvell,armada7040", "marvell,armada-ap806-quad",
-                    "marvell,armada-ap806";
-};
-
 &cp0_pcie0 {
        iommu-map =
                <0x0   &smmu 0x480 0x20>,
index ba1307c..b6fc188 100644 (file)
@@ -9,12 +9,6 @@
 #include "armada-ap806-dual.dtsi"
 #include "armada-80x0.dtsi"
 
-/ {
-       model = "Marvell Armada 8020";
-       compatible = "marvell,armada8020", "marvell,armada-ap806-dual",
-                    "marvell,armada-ap806";
-};
-
 /* The RTC requires external oscillator. But on Aramda 80x0, the RTC clock
  * in CP master is not connected (by package) to the oscillator. So
  * disable it. However, the RTC clock in CP slave is connected to the
index 225a54a..90ae932 100644 (file)
 };
 
 &cp0_gpio2 {
-       sata_reset {
+       sata-reset-hog {
                gpio-hog;
                gpios = <1 GPIO_ACTIVE_HIGH>;
                output-high;
        };
 
-       lte_reset {
+       lte-reset-hog {
                gpio-hog;
                gpios = <2 GPIO_ACTIVE_LOW>;
                output-low;
        };
 
-       wlan_disable {
+       wlan_disable-hog {
                gpio-hog;
                gpios = <19 GPIO_ACTIVE_LOW>;
                output-low;
        };
 
-       lte_disable {
+       lte-disable-hog {
                gpio-hog;
                gpios = <21 GPIO_ACTIVE_LOW>;
                output-low;
index 9c25a88..def25d5 100644 (file)
@@ -13,7 +13,7 @@
 
 / {
        model = "IEI-Puzzle-M801";
-       compatible = "marvell,armada8040", "marvell,armada-ap806-quad", "marvell,armada-ap806";
+       compatible = "iei,puzzle-m801", "marvell,armada8040", "marvell,armada-ap806-quad", "marvell,armada-ap806";
 
        aliases {
                ethernet0 = &cp0_eth0;
index 22c2d6e..3efd9b9 100644 (file)
@@ -9,12 +9,6 @@
 #include "armada-ap806-quad.dtsi"
 #include "armada-80x0.dtsi"
 
-/ {
-       model = "Marvell Armada 8040";
-       compatible = "marvell,armada8040", "marvell,armada-ap806-quad",
-                    "marvell,armada-ap806";
-};
-
 &cp0_pcie0 {
        iommu-map =
                <0x0   &smmu 0x480 0x20>,
index 299e814..32bb56f 100644 (file)
@@ -6,9 +6,3 @@
  */
 
 #include "armada-ap810-ap0-octa-core.dtsi"
-
-/ {
-       model = "Marvell 8080 board";
-       compatible = "marvell,armada-8080", "marvell,armada-ap810-octa",
-                               "marvell,armada-ap810";
-};
index 3ed6fba..82f4ded 100644 (file)
@@ -8,9 +8,6 @@
 #include "armada-ap806.dtsi"
 
 / {
-       model = "Marvell Armada AP806 Dual";
-       compatible = "marvell,armada-ap806-dual", "marvell,armada-ap806";
-
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
index cf6a96d..f37f49c 100644 (file)
@@ -8,9 +8,6 @@
 #include "armada-ap806.dtsi"
 
 / {
-       model = "Marvell Armada AP806 Quad";
-       compatible = "marvell,armada-ap806-quad", "marvell,armada-ap806";
-
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
index 8666286..73a570c 100644 (file)
@@ -5,14 +5,8 @@
  * Device Tree file for Marvell Armada AP806.
  */
 
-#define AP_NAME                ap806
 #include "armada-ap80x.dtsi"
 
-/ {
-       model = "Marvell Armada AP806";
-       compatible = "marvell,armada-ap806";
-};
-
 &ap_syscon0 {
        ap_clk: clock {
                compatible = "marvell,ap806-clock";
index 8848238..e8af754 100644 (file)
@@ -8,9 +8,6 @@
 #include "armada-ap807.dtsi"
 
 / {
-       model = "Marvell Armada AP807 Quad";
-       compatible = "marvell,armada-ap807-quad", "marvell,armada-ap807";
-
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
index a3328d0..196793d 100644 (file)
@@ -5,14 +5,8 @@
  * Copyright (C) 2019 Marvell Technology Group Ltd.
  */
 
-#define AP_NAME                ap807
 #include "armada-ap80x.dtsi"
 
-/ {
-       model = "Marvell Armada AP807";
-       compatible = "marvell,armada-ap807";
-};
-
 &ap_syscon0 {
        ap_clk: clock {
                compatible = "marvell,ap807-clock";
index fdf88cd..40e1469 100644 (file)
                };
        };
 
-       AP_NAME {
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                               <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                               <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                               <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       pmu {
+               compatible = "arm,cortex-a72-pmu";
+               interrupt-parent = <&pic>;
+               interrupts = <17>;
+       };
+
+       soc {
                #address-cells = <2>;
                #size-cells = <2>;
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
                ranges;
 
-               config-space@f0000000 {
+               bus@f0000000 {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        compatible = "simple-bus";
                                };
                        };
 
-                       timer {
-                               compatible = "arm,armv8-timer";
-                               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-                                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
-                       };
-
-                       pmu {
-                               compatible = "arm,cortex-a72-pmu";
-                               interrupt-parent = <&pic>;
-                               interrupts = <17>;
-                       };
-
                        odmi: odmi@300000 {
                                compatible = "marvell,odmi-controller";
                                msi-controller;
index d1a7143..2e719ff 100644 (file)
@@ -11,7 +11,6 @@
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
-               compatible = "marvell,armada-ap810-octa";
 
                cpu0: cpu@0 {
                        device_type = "cpu";
index 2f9ab6b..abb37e5 100644 (file)
 /dts-v1/;
 
 / {
-       model = "Marvell Armada AP810";
-       compatible = "marvell,armada-ap810";
        #address-cells = <2>;
        #size-cells = <2>;
+       interrupt-parent = <&gic>;
 
        aliases {
                serial0 = &uart0_ap0;
                method = "smc";
        };
 
-       ap810-ap0 {
+       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>;
+       };
+
+       soc {
                #address-cells = <2>;
                #size-cells = <2>;
                compatible = "simple-bus";
-               interrupt-parent = <&gic>;
                ranges;
 
-               config-space@e8000000 {
+               bus@e8000000 {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        compatible = "simple-bus";
                                };
                        };
 
-                       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>;
-                       };
-
                        xor@400000 {
                                compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
                                reg = <0x400000 0x1000>,
index 4fd33b0..e3cfd16 100644 (file)
@@ -5,8 +5,4 @@
  * Device Tree file for Marvell Armada CP110.
  */
 
-#define CP11X_TYPE cp110
-
 #include "armada-cp11x.dtsi"
-
-#undef CP11X_TYPE
index 1d0a965..ec6432c 100644 (file)
@@ -5,8 +5,4 @@
  * Device Tree file for Marvell Armada CP115.
  */
 
-#define CP11X_TYPE cp115
-
 #include "armada-cp11x.dtsi"
-
-#undef CP11X_TYPE
index 161beec..a057e11 100644 (file)
@@ -17,7 +17,7 @@
         * The contents of the node are defined below, in order to
         * save one indentation level
         */
-       CP11X_NAME: CP11X_NAME { };
+       CP11X_NAME: CP11X_NODE_NAME(bus) { };
 
        /*
         * CPs only have one sensor in the thermal IC.
@@ -51,7 +51,7 @@
        interrupt-parent = <&CP11X_LABEL(icu_nsr)>;
        ranges;
 
-       config-space@CP11X_BASE {
+       bus@CP11X_BASE {
                #address-cells = <1>;
                #size-cells = <1>;
                compatible = "simple-bus";
index cb8d548..a997bba 100644 (file)
@@ -7,9 +7,6 @@
 #include <dt-bindings/gpio/gpio.h>
 
 / {
-       model = "SolidRun CN9130 SoM";
-       compatible = "solidrun,cn9130-sr-som", "marvell,cn9130";
-
        aliases {
                ethernet0 = &cp0_eth0;
                ethernet1 = &cp0_eth1;
index 150ad84..7b10f9c 100644 (file)
@@ -15,7 +15,8 @@
                        #io-channel-cells = <1>;
                };
 
-               mt6359codec: mt6359codec {
+               mt6359codec: audio-codec {
+                       compatible = "mediatek,mt6359-codec";
                };
 
                regulators {
index b5d4b5b..0d995b3 100644 (file)
 &pwrap {
        pmic: pmic {
                compatible = "mediatek,mt6397";
-               #address-cells = <1>;
-               #size-cells = <1>;
                interrupts-extended = <&pio 11 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-controller;
                #interrupt-cells = <2>;
index 3458be7..6d1d887 100644 (file)
                        #clock-cells = <1>;
                };
 
-               infracfg: power-controller@10001000 {
+               infracfg: clock-controller@10001000 {
                        compatible = "mediatek,mt8173-infracfg", "syscon";
                        reg = <0 0x10001000 0 0x1000>;
                        #clock-cells = <1>;
                        #reset-cells = <1>;
                };
 
-               pericfg: power-controller@10003000 {
+               pericfg: clock-controller@10003000 {
                        compatible = "mediatek,mt8173-pericfg", "syscon";
                        reg = <0 0x10003000 0 0x1000>;
                        #clock-cells = <1>;
                        memory-region = <&vpu_dma_reserved>;
                };
 
-               sysirq: intpol-controller@10200620 {
+               sysirq: interrupt-controller@10200620 {
                        compatible = "mediatek,mt8173-sysirq",
                                     "mediatek,mt6577-sysirq";
                        interrupt-controller;
                };
 
                pwm0: pwm@1401e000 {
-                       compatible = "mediatek,mt8173-disp-pwm",
-                                    "mediatek,mt6595-disp-pwm";
+                       compatible = "mediatek,mt8173-disp-pwm";
                        reg = <0 0x1401e000 0 0x1000>;
                        #pwm-cells = <2>;
                        clocks = <&mmsys CLK_MM_DISP_PWM026M>,
                };
 
                pwm1: pwm@1401f000 {
-                       compatible = "mediatek,mt8173-disp-pwm",
-                                    "mediatek,mt6595-disp-pwm";
+                       compatible = "mediatek,mt8173-disp-pwm";
                        reg = <0 0x1401f000 0 0x1000>;
                        #pwm-cells = <2>;
                        clocks = <&mmsys CLK_MM_DISP_PWM126M>,
index 3935d83..7bc7c26 100644 (file)
 };
 
 &touchscreen {
-       status = "okay";
+       compatible = "elan,ekth6a12nay";
 
-       compatible = "hid-over-i2c";
-       reg = <0x10>;
-       interrupts-extended = <&pio 155 IRQ_TYPE_LEVEL_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&touchscreen_pins>;
 
-       post-power-on-delay-ms = <10>;
-       hid-descr-addr = <0x0001>;
+       vcc33-supply = <&pp3300_alw>;
+       vccio-supply = <&pp1800_alw>;
 };
 
 &mt6358codec {
index 72852b7..863f3e4 100644 (file)
 };
 
 &touchscreen {
-       status = "okay";
+       compatible = "elan,ekth6a12nay";
 
-       compatible = "hid-over-i2c";
-       reg = <0x10>;
-       interrupts-extended = <&pio 155 IRQ_TYPE_LEVEL_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&touchscreen_pins>;
 
-       post-power-on-delay-ms = <10>;
-       hid-descr-addr = <0x0001>;
+       vcc33-supply = <&pp3300_alw>;
 };
 
 &qca_wifi {
index 757d0af..e0a583c 100644 (file)
 };
 
 &touchscreen {
-       status = "okay";
+       compatible = "elan,ekth6a12nay";
 
-       compatible = "hid-over-i2c";
-       reg = <0x10>;
-       interrupts-extended = <&pio 155 IRQ_TYPE_LEVEL_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&touchscreen_pins>;
 
-       post-power-on-delay-ms = <10>;
-       hid-descr-addr = <0x0001>;
+       vcc33-supply = <&pp3300_alw>;
 };
 
 
index 6641b08..7874c9a 100644 (file)
 };
 
 &touchscreen {
-       status = "okay";
+       compatible = "elan,ekth6a12nay";
 
-       compatible = "hid-over-i2c";
-       reg = <0x10>;
-       interrupts-extended = <&pio 155 IRQ_TYPE_LEVEL_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&touchscreen_pins>;
 
-       post-power-on-delay-ms = <10>;
-       hid-descr-addr = <0x0001>;
+       vcc33-supply = <&pp3300_alw>;
 };
 
 
index b6abecb..c5254ae 100644 (file)
@@ -9,6 +9,7 @@
 
 / {
        aliases {
+               dsi0 = &disp_dsi0;
                i2c0 = &i2c0;
                i2c1 = &i2c1;
                i2c2 = &i2c2;
 
                port {
                        dsi_panel_in: endpoint {
-                               remote-endpoint = <&dsi_out>;
+                               remote-endpoint = <&dsi0_out>;
                        };
                };
        };
 
-       port {
-               dsi_out: endpoint {
-                       remote-endpoint = <&dsi_panel_in>;
+       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>;
+                       };
                };
        };
 };
        pinctrl-0 = <&disp_pwm1_pins>;
 };
 
+&dither0_in {
+       remote-endpoint = <&postmask0_out>;
+};
+
+&dither0_out {
+       remote-endpoint = <&dsi0_in>;
+};
+
+&ethdr0 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       ethdr0_in: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&vdosys1_ep_ext>;
+                       };
+               };
+
+               port@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       ethdr0_out: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&merge5_in>;
+                       };
+               };
+       };
+};
+
+&gamma0_out {
+       remote-endpoint = <&postmask0_in>;
+};
+
 &dp_intf1 {
        status = "okay";
 
-       port {
-               dp_intf1_out: endpoint {
-                       remote-endpoint = <&dptx_in>;
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       dp_intf1_in: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&merge5_out>;
+                       };
+               };
+
+               port@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       dp_intf1_out: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&dptx_in>;
+                       };
                };
        };
 };
        status = "okay";
 };
 
+&merge5 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       merge5_in: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&ethdr0_out>;
+                       };
+               };
+
+               port@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       merge5_out: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&dp_intf1_in>;
+                       };
+               };
+       };
+};
+
 &mfg0 {
        domain-supply = <&mt6359_vproc2_buck_reg>;
 };
        };
 };
 
+&ovl0_in {
+       remote-endpoint = <&vdosys0_ep_main>;
+};
+
 &pcie {
        pinctrl-names = "default";
        pinctrl-0 = <&pcie_pins>;
        interrupts-extended = <&pio 222 IRQ_TYPE_LEVEL_HIGH>;
 };
 
+&postmask0_in {
+       remote-endpoint = <&gamma0_out>;
+};
+
+&postmask0_out {
+       remote-endpoint = <&dither0_in>;
+};
+
 &sound {
        pinctrl-names = "aud_etdm_hp_on", "aud_etdm_hp_off",
                        "aud_etdm_spk_on", "aud_etdm_spk_off",
 };
 
 /* USB detachable base */
+&ssusb0 {
+       dr_mode = "host";
+       vusb33-supply = <&pp3300_s3>;
+       status = "okay";
+};
+
 &xhci0 {
        /* controlled by EC */
        vbus-supply = <&pp3300_z1>;
 };
 
 /* USB3 hub */
+&ssusb1 {
+       dr_mode = "host";
+       vusb33-supply = <&pp3300_s3>;
+       status = "okay";
+};
+
 &xhci1 {
        vusb33-supply = <&pp3300_s3>;
        vbus-supply = <&pp5000_usb_vbus>;
 };
 
 /* USB BT */
+&ssusb2 {
+       dr_mode = "host";
+       vusb33-supply = <&pp3300_s3>;
+       status = "okay";
+};
+
+&vdosys0 {
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vdosys0_ep_main: endpoint@0 {
+                       reg = <0>;
+                       remote-endpoint = <&ovl0_in>;
+               };
+       };
+};
+
+&vdosys1 {
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vdosys1_ep_ext: endpoint@1 {
+                       reg = <1>;
+                       remote-endpoint = <&ethdr0_in>;
+               };
+       };
+};
+
 &xhci2 {
        /* no power supply since MT7921's power is controlled by PCIe */
        /* MT7921's USB BT has issues with USB2 LPM */
index 3381209..69a8423 100644 (file)
        aliases {
                dp-intf0 = &dp_intf0;
                dp-intf1 = &dp_intf1;
+               dsc0 = &dsc0;
                ethdr0 = &ethdr0;
                gce0 = &gce0;
                gce1 = &gce1;
+               merge0 = &merge0;
                merge1 = &merge1;
                merge2 = &merge2;
                merge3 = &merge3;
                        };
 
                        cooling-maps {
-                               map0 {
+                               cpu_little0_cooling_map0: map0 {
                                        trip = <&cpu_little0_alert0>;
                                        cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                         <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                        };
 
                        cooling-maps {
-                               map0 {
+                               cpu_little1_cooling_map0: map0 {
                                        trip = <&cpu_little1_alert0>;
                                        cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                         <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                        };
 
                        cooling-maps {
-                               map0 {
+                               cpu_little2_cooling_map0: map0 {
                                        trip = <&cpu_little2_alert0>;
                                        cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                         <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                        };
 
                        cooling-maps {
-                               map0 {
+                               cpu_little3_cooling_map0: map0 {
                                        trip = <&cpu_little3_alert0>;
                                        cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                         <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                        compatible = "mediatek,mt8188-afe";
                        reg = <0 0x10b10000 0 0x10000>;
                        assigned-clocks = <&topckgen CLK_TOP_A1SYS_HP>;
-                       assigned-clock-parents =  <&clk26m>;
+                       assigned-clock-parents = <&topckgen CLK_TOP_APLL1_D4>;
                        clocks = <&clk26m>,
                                 <&apmixedsys CLK_APMIXED_APLL1>,
                                 <&apmixedsys CLK_APMIXED_APLL2>,
                        status = "disabled";
                };
 
+               ssusb1: usb@11201000 {
+                       compatible = "mediatek,mt8188-mtu3", "mediatek,mtu3";
+                       reg = <0 0x11201000 0 0x2dff>, <0 0x11203e00 0 0x0100>;
+                       reg-names = "mac", "ippc";
+                       ranges = <0 0 0 0x11200000 0 0x3f00>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH 0>;
+                       assigned-clocks = <&topckgen CLK_TOP_USB_TOP>;
+                       assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
+                       clocks = <&pericfg_ao CLK_PERI_AO_SSUSB_BUS>,
+                                <&topckgen CLK_TOP_SSUSB_TOP_REF>,
+                                <&pericfg_ao CLK_PERI_AO_SSUSB_XHCI>;
+                       clock-names = "sys_ck", "ref_ck", "mcu_ck";
+                       phys = <&u2port1 PHY_TYPE_USB2>, <&u3port1 PHY_TYPE_USB3>;
+                       wakeup-source;
+                       mediatek,syscon-wakeup = <&pericfg 0x468 2>;
+                       status = "disabled";
+
+                       xhci1: usb@0 {
+                               compatible = "mediatek,mt8188-xhci", "mediatek,mtk-xhci";
+                               reg = <0 0 0 0x1000>;
+                               reg-names = "mac";
+                               interrupts = <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH 0>;
+                               assigned-clocks = <&topckgen CLK_TOP_SSUSB_XHCI>;
+                               assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
+                               clocks = <&pericfg_ao CLK_PERI_AO_SSUSB_XHCI>;
+                               clock-names = "sys_ck";
+                               status = "disabled";
+                       };
+               };
+
                eth: ethernet@11021000 {
                        compatible = "mediatek,mt8188-gmac", "mediatek,mt8195-gmac",
                                     "snps,dwmac-5.10a";
                        };
                };
 
-               xhci1: usb@11200000 {
-                       compatible = "mediatek,mt8188-xhci", "mediatek,mtk-xhci";
-                       reg = <0 0x11200000 0 0x1000>,
-                             <0 0x11203e00 0 0x0100>;
-                       reg-names = "mac", "ippc";
-                       interrupts = <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH 0>;
-                       phys = <&u2port1 PHY_TYPE_USB2>,
-                              <&u3port1 PHY_TYPE_USB3>;
-                       assigned-clocks = <&topckgen CLK_TOP_USB_TOP>,
-                                         <&topckgen CLK_TOP_SSUSB_XHCI>;
-                       assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>,
-                                                <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
-                       clocks = <&pericfg_ao CLK_PERI_AO_SSUSB_BUS>,
-                                <&topckgen CLK_TOP_SSUSB_TOP_REF>,
-                                <&pericfg_ao CLK_PERI_AO_SSUSB_XHCI>;
-                       clock-names = "sys_ck", "ref_ck", "mcu_ck";
-                       mediatek,syscon-wakeup = <&pericfg 0x468 2>;
-                       wakeup-source;
-                       status = "disabled";
-               };
-
                mmc0: mmc@11230000 {
                        compatible = "mediatek,mt8188-mmc", "mediatek,mt8183-mmc";
                        reg = <0 0x11230000 0 0x10000>,
                        status = "disabled";
                };
 
+               mmc2: mmc@11250000 {
+                       compatible = "mediatek,mt8188-mmc", "mediatek,mt8183-mmc";
+                       reg = <0 0x11250000 0 0x1000>,
+                             <0 0x11e60000 0 0x1000>;
+                       interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&topckgen CLK_TOP_MSDC30_2>,
+                                <&infracfg_ao CLK_INFRA_AO_MSDC2>,
+                                <&infracfg_ao CLK_INFRA_AO_MSDC30_2>;
+                       clock-names = "source", "hclk", "source_cg";
+                       assigned-clocks = <&topckgen CLK_TOP_MSDC30_2>;
+                       assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL_D2>;
+                       status = "disabled";
+               };
+
                lvts_mcu: thermal-sensor@11278000 {
                        compatible = "mediatek,mt8188-lvts-mcu";
                        reg = <0 0x11278000 0 0x1000>;
                        #clock-cells = <1>;
                };
 
-               xhci2: usb@112a0000 {
-                       compatible = "mediatek,mt8188-xhci", "mediatek,mtk-xhci";
-                       reg = <0 0x112a0000 0 0x1000>,
-                             <0 0x112a3e00 0 0x0100>;
+               ssusb2: usb@112a1000 {
+                       compatible = "mediatek,mt8188-mtu3", "mediatek,mtu3";
+                       reg = <0 0x112a1000 0 0x2dff>, <0 0x112a3e00 0 0x0100>;
                        reg-names = "mac", "ippc";
-                       interrupts = <GIC_SPI 536 IRQ_TYPE_LEVEL_HIGH 0>;
-                       phys = <&u2port2 PHY_TYPE_USB2>;
-                       assigned-clocks = <&topckgen CLK_TOP_SSUSB_XHCI_3P>,
-                                         <&topckgen CLK_TOP_USB_TOP_3P>;
-                       assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>,
-                                                <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
+                       ranges = <0 0 0 0x112a0000 0 0x3f00>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       interrupts = <GIC_SPI 535 IRQ_TYPE_LEVEL_HIGH 0>;
+                       assigned-clocks = <&topckgen CLK_TOP_USB_TOP_3P>;
+                       assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
                        clocks = <&pericfg_ao CLK_PERI_AO_SSUSB_3P_BUS>,
                                 <&topckgen CLK_TOP_SSUSB_TOP_P3_REF>,
                                 <&pericfg_ao CLK_PERI_AO_SSUSB_3P_XHCI>;
                        clock-names = "sys_ck", "ref_ck", "mcu_ck";
+                       phys = <&u2port2 PHY_TYPE_USB2>;
+                       wakeup-source;
+                       mediatek,syscon-wakeup = <&pericfg 0x470 2>;
                        status = "disabled";
+
+                       xhci2: usb@0 {
+                               compatible = "mediatek,mt8188-xhci", "mediatek,mtk-xhci";
+                               reg = <0 0 0 0x1000>;
+                               reg-names = "mac";
+                               interrupts = <GIC_SPI 536 IRQ_TYPE_LEVEL_HIGH 0>;
+                               assigned-clocks = <&topckgen CLK_TOP_SSUSB_XHCI_3P>;
+                               assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
+                               clocks = <&pericfg_ao CLK_PERI_AO_SSUSB_3P_XHCI>;
+                               clock-names = "sys_ck";
+                               status = "disabled";
+                       };
                };
 
-               xhci0: usb@112b0000 {
-                       compatible = "mediatek,mt8188-xhci", "mediatek,mtk-xhci";
-                       reg = <0 0x112b0000 0 0x1000>,
-                             <0 0x112b3e00 0 0x0100>;
+               ssusb0: usb@112b1000 {
+                       compatible = "mediatek,mt8188-mtu3", "mediatek,mtu3";
+                       reg = <0 0x112b1000 0 0x2dff>, <0 0x112b3e00 0 0x0100>;
                        reg-names = "mac", "ippc";
-                       interrupts = <GIC_SPI 533 IRQ_TYPE_LEVEL_HIGH 0>;
-                       phys = <&u2port0 PHY_TYPE_USB2>;
-                       assigned-clocks = <&topckgen CLK_TOP_SSUSB_XHCI_2P>,
-                                         <&topckgen CLK_TOP_USB_TOP_2P>;
-                       assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>,
-                                                <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
+                       ranges = <0 0 0 0x112b0000 0 0x3f00>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       interrupts = <GIC_SPI 532 IRQ_TYPE_LEVEL_HIGH 0>;
+                       assigned-clocks = <&topckgen CLK_TOP_SSUSB_XHCI_2P>;
+                       assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
                        clocks = <&pericfg_ao CLK_PERI_AO_SSUSB_2P_BUS>,
                                 <&topckgen CLK_TOP_SSUSB_TOP_P2_REF>,
                                 <&pericfg_ao CLK_PERI_AO_SSUSB_2P_XHCI>;
                        clock-names = "sys_ck", "ref_ck", "mcu_ck";
-                       mediatek,syscon-wakeup = <&pericfg 0x460 2>;
+                       phys = <&u2port0 PHY_TYPE_USB2>;
                        wakeup-source;
+                       mediatek,syscon-wakeup = <&pericfg 0x460 2>;
                        status = "disabled";
+
+                       xhci0: usb@0 {
+                               compatible = "mediatek,mt8188-xhci", "mediatek,mtk-xhci";
+                               reg = <0 0 0 0x1000>;
+                               reg-names = "mac";
+                               interrupts = <GIC_SPI 533 IRQ_TYPE_LEVEL_HIGH 0>;
+                               assigned-clocks = <&topckgen CLK_TOP_USB_TOP_2P>;
+                               assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
+                               clocks = <&pericfg_ao CLK_PERI_AO_SSUSB_2P_XHCI>;
+                               clock-names = "sys_ck";
+                               status = "disabled";
+                       };
                };
 
                pcie: pcie@112f0000 {
                        iommus = <&vdo_iommu M4U_PORT_L0_DISP_OVL0_RDMA0>;
                        power-domains = <&spm MT8188_POWER_DOMAIN_VDOSYS0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x0000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       ovl0_in: endpoint { };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       ovl0_out: endpoint {
+                                               remote-endpoint = <&rdma0_in>;
+                                       };
+                               };
+                       };
                };
 
                rdma0: rdma@1c002000 {
                        iommus = <&vdo_iommu M4U_PORT_L1_DISP_RDMA0>;
                        power-domains = <&spm MT8188_POWER_DOMAIN_VDOSYS0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x2000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       rdma0_in: endpoint {
+                                               remote-endpoint = <&ovl0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       rdma0_out: endpoint {
+                                               remote-endpoint = <&color0_in>;
+                                       };
+                               };
+                       };
                };
 
                color0: color@1c003000 {
                        interrupts = <GIC_SPI 639 IRQ_TYPE_LEVEL_HIGH 0>;
                        power-domains = <&spm MT8188_POWER_DOMAIN_VDOSYS0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x3000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       color0_in: endpoint {
+                                               remote-endpoint = <&rdma0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       color0_out: endpoint {
+                                               remote-endpoint = <&ccorr0_in>;
+                                       };
+                               };
+                       };
                };
 
                ccorr0: ccorr@1c004000 {
                        interrupts = <GIC_SPI 640 IRQ_TYPE_LEVEL_HIGH 0>;
                        power-domains = <&spm MT8188_POWER_DOMAIN_VDOSYS0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x4000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       ccorr0_in: endpoint {
+                                               remote-endpoint = <&color0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       ccorr0_out: endpoint {
+                                               remote-endpoint = <&aal0_in>;
+                                       };
+                               };
+                       };
                };
 
                aal0: aal@1c005000 {
                        interrupts = <GIC_SPI 641 IRQ_TYPE_LEVEL_HIGH 0>;
                        power-domains = <&spm MT8188_POWER_DOMAIN_VDOSYS0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x5000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       aal0_in: endpoint {
+                                               remote-endpoint = <&ccorr0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       aal0_out: endpoint {
+                                               remote-endpoint = <&gamma0_in>;
+                                       };
+                               };
+                       };
                };
 
                gamma0: gamma@1c006000 {
                        interrupts = <GIC_SPI 642 IRQ_TYPE_LEVEL_HIGH 0>;
                        power-domains = <&spm MT8188_POWER_DOMAIN_VDOSYS0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x6000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       gamma0_in: endpoint {
+                                               remote-endpoint = <&aal0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       gamma0_out: endpoint { };
+                               };
+                       };
                };
 
                dither0: dither@1c007000 {
                        interrupts = <GIC_SPI 643 IRQ_TYPE_LEVEL_HIGH 0>;
                        power-domains = <&spm MT8188_POWER_DOMAIN_VDOSYS0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x7000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       dither0_in: endpoint { };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       dither0_out: endpoint { };
+                               };
+                       };
                };
 
                disp_dsi0: dsi@1c008000 {
                        status = "disabled";
                };
 
+               dsc0: dsc@1c009000 {
+                       compatible = "mediatek,mt8188-disp-dsc", "mediatek,mt8195-disp-dsc";
+                       reg = <0 0x1c009000 0 0x1000>;
+                       clocks = <&vdosys0 CLK_VDO0_DSC_WRAP0>;
+                       interrupts = <GIC_SPI 645 IRQ_TYPE_LEVEL_HIGH 0>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VDOSYS0>;
+                       mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x9000 0x1000>;
+               };
+
                disp_dsi1: dsi@1c012000 {
                        compatible = "mediatek,mt8188-dsi";
                        reg = <0 0x1c012000 0 0x1000>;
                        status = "disabled";
                };
 
+               merge0: merge0@1c014000 {
+                       compatible = "mediatek,mt8188-disp-merge", "mediatek,mt8195-disp-merge";
+                       reg = <0 0x1c014000 0 0x1000>;
+                       clocks = <&vdosys0 CLK_VDO0_VPP_MERGE0>,
+                                <&vdosys1 CLK_VDO1_MERGE_VDO1_DL_ASYNC>;
+                       clock-names = "merge", "merge_async";
+                       interrupts = <GIC_SPI 656 IRQ_TYPE_LEVEL_HIGH 0>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VDOSYS0>;
+                       mediatek,gce-client-reg = <&gce0 SUBSYS_1c01XXXX 0x4000 0x1000>;
+               };
+
                dp_intf0: dp-intf@1c015000 {
                        compatible = "mediatek,mt8188-dp-intf";
                        reg = <0 0x1c015000 0 0x1000>;
                        interrupts = <GIC_SPI 661 IRQ_TYPE_LEVEL_HIGH 0>;
                        power-domains = <&spm MT8188_POWER_DOMAIN_VDOSYS0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c01XXXX 0xa000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       postmask0_in: endpoint { };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       postmask0_out: endpoint { };
+                               };
+                       };
                };
 
                vdosys0: syscon@1c01d000 {
index 5056e07..e705998 100644 (file)
        cpu-supply = <&mt6315_6_vbuck1>;
 };
 
+&dither0_out {
+       remote-endpoint = <&dsc0_in>;
+};
+
 &dp_intf0 {
        status = "okay";
 
-       port {
-               dp_intf0_out: endpoint {
-                       remote-endpoint = <&edp_in>;
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+                       dp_intf0_in: endpoint {
+                               remote-endpoint = <&merge0_out>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+                       dp_intf0_out: endpoint {
+                               remote-endpoint = <&edp_in>;
+                       };
                };
        };
 };
 &dp_intf1 {
        status = "okay";
 
-       port {
-               dp_intf1_out: endpoint {
-                       remote-endpoint = <&dptx_in>;
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       dp_intf1_in: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&merge5_out>;
+                       };
+               };
+
+               port@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       dp_intf1_out: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&dptx_in>;
+                       };
+               };
+       };
+};
+
+&dsc0 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+                       dsc0_in: endpoint {
+                               remote-endpoint = <&dither0_out>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+                       dsc0_out: endpoint {
+                               remote-endpoint = <&merge0_in>;
+                       };
                };
        };
 };
        };
 };
 
+&ethdr0 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       ethdr0_in: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&vdosys1_ep_ext>;
+                       };
+               };
+
+               port@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       ethdr0_out: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&merge5_in>;
+                       };
+               };
+       };
+};
+
 &disp_pwm0 {
        status = "okay";
 
                #size-cells = <0>;
 
                port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
                        reg = <0>;
-                       dptx_in: endpoint {
+
+                       dptx_in: endpoint@1 {
+                               reg = <1>;
                                remote-endpoint = <&dp_intf1_out>;
                        };
                };
        };
 };
 
+&merge0 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+                       merge0_in: endpoint {
+                               remote-endpoint = <&dsc0_out>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+                       merge0_out: endpoint {
+                               remote-endpoint = <&dp_intf0_in>;
+                       };
+               };
+       };
+};
+
+&merge5 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       merge5_in: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&ethdr0_out>;
+                       };
+               };
+
+               port@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       merge5_out: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&dp_intf1_in>;
+                       };
+               };
+       };
+};
+
 &mfg0 {
        domain-supply = <&mt6315_7_vbuck1>;
 };
        };
 };
 
+&ovl0_in {
+       remote-endpoint = <&vdosys0_ep_main>;
+};
+
 &pcie1 {
        status = "okay";
 
        status = "okay";
 };
 
+&vdosys0 {
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vdosys0_ep_main: endpoint@0 {
+                       reg = <0>;
+                       remote-endpoint = <&ovl0_in>;
+               };
+       };
+};
+
 /*
  * For the USB Type-C ports the role and alternate modes switching is
  * done by the EC so we set dr_mode to host to avoid interfering.
        status = "okay";
 };
 
+&vdosys1 {
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vdosys1_ep_ext: endpoint@1 {
+                       reg = <1>;
+                       remote-endpoint = <&ethdr0_in>;
+               };
+       };
+};
+
 &xhci0 {
        status = "okay";
 
index f013dba..4f2dc0a 100644 (file)
                        clocks = <&vdosys0 CLK_VDO0_DISP_OVL0>;
                        iommus = <&iommu_vdo M4U_PORT_L0_DISP_OVL0_RDMA0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x0000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       ovl0_in: endpoint { };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       ovl0_out: endpoint {
+                                               remote-endpoint = <&rdma0_in>;
+                                       };
+                               };
+                       };
                };
 
                rdma0: rdma@1c002000 {
                        clocks = <&vdosys0 CLK_VDO0_DISP_RDMA0>;
                        iommus = <&iommu_vdo M4U_PORT_L0_DISP_RDMA0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x2000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       rdma0_in: endpoint {
+                                               remote-endpoint = <&ovl0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       rdma0_out: endpoint {
+                                               remote-endpoint = <&color0_in>;
+                                       };
+                               };
+                       };
                };
 
                color0: color@1c003000 {
                        power-domains = <&spm MT8195_POWER_DOMAIN_VDOSYS0>;
                        clocks = <&vdosys0 CLK_VDO0_DISP_COLOR0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x3000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       color0_in: endpoint {
+                                               remote-endpoint = <&rdma0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       color0_out: endpoint {
+                                               remote-endpoint = <&ccorr0_in>;
+                                       };
+                               };
+                       };
                };
 
                ccorr0: ccorr@1c004000 {
                        power-domains = <&spm MT8195_POWER_DOMAIN_VDOSYS0>;
                        clocks = <&vdosys0 CLK_VDO0_DISP_CCORR0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x4000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       ccorr0_in: endpoint {
+                                               remote-endpoint = <&color0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       ccorr0_out: endpoint {
+                                               remote-endpoint = <&aal0_in>;
+                                       };
+                               };
+                       };
                };
 
                aal0: aal@1c005000 {
                        power-domains = <&spm MT8195_POWER_DOMAIN_VDOSYS0>;
                        clocks = <&vdosys0 CLK_VDO0_DISP_AAL0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x5000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       aal0_in: endpoint {
+                                               remote-endpoint = <&ccorr0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       aal0_out: endpoint {
+                                               remote-endpoint = <&gamma0_in>;
+                                       };
+                               };
+                       };
                };
 
                gamma0: gamma@1c006000 {
                        power-domains = <&spm MT8195_POWER_DOMAIN_VDOSYS0>;
                        clocks = <&vdosys0 CLK_VDO0_DISP_GAMMA0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x6000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       gamma0_in: endpoint {
+                                               remote-endpoint = <&aal0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       gamma0_out: endpoint {
+                                               remote-endpoint = <&dither0_in>;
+                                       };
+                               };
+                       };
                };
 
                dither0: dither@1c007000 {
                        power-domains = <&spm MT8195_POWER_DOMAIN_VDOSYS0>;
                        clocks = <&vdosys0 CLK_VDO0_DISP_DITHER0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x7000 0x1000>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       dither0_in: endpoint {
+                                               remote-endpoint = <&gamma0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       dither0_out: endpoint { };
+                               };
+                       };
                };
 
                dsi0: dsi@1c008000 {
index 44c6109..1f8584b 100644 (file)
                stdout-path = "serial0:921600n8";
        };
 
+       connector {
+               compatible = "hdmi-connector";
+               label = "hdmi";
+               type = "d";
+
+               port {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       hdmi_connector_in: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&hdmi_connector_out>;
+                       };
+               };
+       };
+
        firmware {
                optee {
                        compatible = "linaro,optee-tz";
                pinctrl-5 = <&aud_mosi_on_pins>;
                mediatek,platform = <&afe>;
        };
+
+       vsys_lcm_reg: regulator-vsys-lcm {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&pio 129 GPIO_ACTIVE_HIGH>;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "vsys_lcm";
+       };
+
 };
 
 &afe {
        sram-supply = <&mt6357_vsram_proc_reg>;
 };
 
+&dither0_out {
+       remote-endpoint = <&dsi0_in>;
+};
+
+&dpi0 {
+       pinctrl-0 = <&dpi_default_pins>;
+       pinctrl-1 = <&dpi_idle_pins>;
+       pinctrl-names = "default", "sleep";
+       /*
+        * Ethernet and HDMI (DPI0) are sharing pins.
+        * Only one can be enabled at a time and require the physical switch
+        * SW2101 to be set on LAN position
+        */
+       status = "disabled";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       dpi0_in: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&rdma1_out>;
+                       };
+               };
+
+               port@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       dpi0_out: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&it66121_in>;
+                       };
+               };
+       };
+};
+
+&dsi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       panel@0 {
+               compatible = "startek,kd070fhfid015";
+               reg = <0>;
+               enable-gpios = <&pio 67 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&pio 20 GPIO_ACTIVE_HIGH>;
+               iovcc-supply = <&mt6357_vsim1_reg>;
+               power-supply = <&vsys_lcm_reg>;
+
+               port {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       panel_in: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&dsi0_out>;
+                       };
+               };
+       };
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       dsi0_in: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&dither0_out>;
+                       };
+               };
+
+               port@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       dsi0_out: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
+       };
+};
+
 &ethernet {
        pinctrl-0 = <&ethernet_pins>;
        pinctrl-names = "default";
        phy-handle = <&eth_phy>;
        phy-mode = "rmii";
        /*
-        * Ethernet and HDMI (DSI0) are sharing pins.
+        * Ethernet and HDMI (DPI0) are sharing pins.
         * Only one can be enabled at a time and require the physical switch
         * SW2101 to be set on LAN position
         * mt6357_vibr_reg and mt6357_vsim2_reg are needed to supply ethernet
        status = "okay";
 };
 
+&i2c1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       clock-div = <2>;
+       clock-frequency = <100000>;
+       pinctrl-0 = <&i2c1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       it66121_hdmi: hdmi@4c {
+               compatible = "ite,it66121";
+               reg = <0x4c>;
+               #sound-dai-cells = <0>;
+               interrupt-parent = <&pio>;
+               interrupts = <68 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-0 = <&ite_pins>;
+               pinctrl-names = "default";
+               reset-gpios = <&pio 69 GPIO_ACTIVE_LOW>;
+               vcn18-supply = <&mt6357_vsim2_reg>;
+               vcn33-supply = <&mt6357_vibr_reg>;
+               vrf12-supply = <&mt6357_vrf12_reg>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0>;
+                               it66121_in: endpoint@0 {
+                                       reg = <0>;
+                                       bus-width = <12>;
+                                       remote-endpoint = <&dpi0_out>;
+                               };
+                       };
+
+                       port@1 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <1>;
+                               hdmi_connector_out: endpoint@0 {
+                                       reg = <0>;
+                                       remote-endpoint = <&hdmi_connector_in>;
+                               };
+                       };
+               };
+       };
+};
+
 &mmc0 {
        assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL>;
        assigned-clocks = <&topckgen CLK_TOP_MSDC50_0_SEL>;
        mediatek,micbias1-microvolt = <1700000>;
 };
 
+&mt6357_vsim1_reg {
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <1800000>;
+};
+
 &pio {
        aud_default_pins: audiodefault-pins {
                clk-dat-pins {
                };
        };
 
+       dpi_default_pins: dpi-default-pins {
+               pins {
+                       pinmux = <MT8365_PIN_0_GPIO0__FUNC_DPI_D0>,
+                                <MT8365_PIN_1_GPIO1__FUNC_DPI_D1>,
+                                <MT8365_PIN_2_GPIO2__FUNC_DPI_D2>,
+                                <MT8365_PIN_3_GPIO3__FUNC_DPI_D3>,
+                                <MT8365_PIN_4_GPIO4__FUNC_DPI_D4>,
+                                <MT8365_PIN_5_GPIO5__FUNC_DPI_D5>,
+                                <MT8365_PIN_6_GPIO6__FUNC_DPI_D6>,
+                                <MT8365_PIN_7_GPIO7__FUNC_DPI_D7>,
+                                <MT8365_PIN_8_GPIO8__FUNC_DPI_D8>,
+                                <MT8365_PIN_9_GPIO9__FUNC_DPI_D9>,
+                                <MT8365_PIN_10_GPIO10__FUNC_DPI_D10>,
+                                <MT8365_PIN_11_GPIO11__FUNC_DPI_D11>,
+                                <MT8365_PIN_12_GPIO12__FUNC_DPI_DE>,
+                                <MT8365_PIN_13_GPIO13__FUNC_DPI_VSYNC>,
+                                <MT8365_PIN_14_GPIO14__FUNC_DPI_CK>,
+                                <MT8365_PIN_15_GPIO15__FUNC_DPI_HSYNC>;
+                       drive-strength = <4>;
+               };
+       };
+
+       dpi_idle_pins: dpi-idle-pins {
+               pins {
+                       pinmux = <MT8365_PIN_0_GPIO0__FUNC_GPIO0>,
+                                <MT8365_PIN_1_GPIO1__FUNC_GPIO1>,
+                                <MT8365_PIN_2_GPIO2__FUNC_GPIO2>,
+                                <MT8365_PIN_3_GPIO3__FUNC_GPIO3>,
+                                <MT8365_PIN_4_GPIO4__FUNC_GPIO4>,
+                                <MT8365_PIN_5_GPIO5__FUNC_GPIO5>,
+                                <MT8365_PIN_6_GPIO6__FUNC_GPIO6>,
+                                <MT8365_PIN_7_GPIO7__FUNC_GPIO7>,
+                                <MT8365_PIN_8_GPIO8__FUNC_GPIO8>,
+                                <MT8365_PIN_9_GPIO9__FUNC_GPIO9>,
+                                <MT8365_PIN_10_GPIO10__FUNC_GPIO10>,
+                                <MT8365_PIN_11_GPIO11__FUNC_GPIO11>,
+                                <MT8365_PIN_12_GPIO12__FUNC_GPIO12>,
+                                <MT8365_PIN_13_GPIO13__FUNC_GPIO13>,
+                                <MT8365_PIN_14_GPIO14__FUNC_GPIO14>,
+                                <MT8365_PIN_15_GPIO15__FUNC_GPIO15>;
+               };
+       };
+
        ethernet_pins: ethernet-pins {
                phy_reset_pins {
                        pinmux = <MT8365_PIN_133_TDM_TX_DATA1__FUNC_GPIO133>;
                };
        };
 
+       i2c1_pins: i2c1-pins {
+               pins {
+                       pinmux = <MT8365_PIN_59_SDA1__FUNC_SDA1_0>,
+                                <MT8365_PIN_60_SCL1__FUNC_SCL1_0>;
+                       bias-pull-up;
+               };
+       };
+
+       ite_pins: ite-pins {
+               irq_ite_pins {
+                       pinmux = <MT8365_PIN_68_CMDAT0__FUNC_GPIO68>;
+                       input-enable;
+                       bias-pull-up;
+               };
+
+               pwr_pins {
+                       pinmux = <MT8365_PIN_70_CMDAT2__FUNC_GPIO70>,
+                                <MT8365_PIN_71_CMDAT3__FUNC_GPIO71>;
+                       output-high;
+               };
+
+               rst_ite_pins {
+                       pinmux = <MT8365_PIN_69_CMDAT1__FUNC_GPIO69>;
+                       output-high;
+               };
+       };
+
        mmc0_default_pins: mmc0-default-pins {
                clk-pins {
                        pinmux = <MT8365_PIN_99_MSDC0_CLK__FUNC_MSDC0_CLK>;
        status = "okay";
 };
 
+&rdma1_out {
+       remote-endpoint = <&dpi0_in>;
+};
+
 &ssusb {
        dr_mode = "otg";
        maximum-speed = "high-speed";
index 2bf8c9d..e6d2b32 100644 (file)
@@ -10,6 +10,7 @@
 #include <dt-bindings/clock/mediatek,mt8365-clk.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/memory/mediatek,mt8365-larb-port.h>
 #include <dt-bindings/phy/phy.h>
 #include <dt-bindings/power/mediatek,mt8365-power.h>
 
        #address-cells = <2>;
        #size-cells = <2>;
 
+       aliases {
+               aal0 = &aal0;
+               ccorr0 = &ccorr0;
+               color0 = &color0;
+               dither0 = &dither0;
+               dpi0 = &dpi0;
+               dsi0 = &dsi0;
+               gamma0 = &gamma0;
+               ovl0 = &ovl0;
+               rdma0 = &rdma0;
+               rdma1 = &rdma1;
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                        status = "disabled";
                };
 
+               disp_pwm: pwm@1100e000 {
+                       compatible = "mediatek,mt8365-disp-pwm", "mediatek,mt8183-disp-pwm";
+                       reg = <0 0x1100e000 0 0x1000>;
+                       clock-names = "main", "mm";
+                       clocks = <&topckgen CLK_TOP_DISP_PWM_SEL>, <&infracfg CLK_IFR_DISP_PWM>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
+                       #pwm-cells = <2>;
+               };
+
                i2c3: i2c@1100f000 {
                        compatible = "mediatek,mt8365-i2c", "mediatek,mt8168-i2c";
                        reg = <0 0x1100f000 0 0xa0>, <0 0x11000200 0 0x80>;
                        status = "disabled";
                };
 
+               mipi_tx0: dsi-phy@11c00000 {
+                       compatible = "mediatek,mt8365-mipi-tx", "mediatek,mt8183-mipi-tx";
+                       reg = <0 0x11c00000 0 0x800>;
+                       clock-output-names = "mipi_tx0_pll";
+                       clocks = <&clk26m>;
+                       #clock-cells = <0>;
+                       #phy-cells = <0>;
+               };
+
                u3phy: t-phy@11cc0000 {
                        compatible = "mediatek,mt8365-tphy", "mediatek,generic-tphy-v2";
                        #address-cells = <1>;
                        compatible = "mediatek,mt8365-mmsys", "syscon";
                        reg = <0 0x14000000 0 0x1000>;
                        #clock-cells = <1>;
+                       port {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               mmsys_main: endpoint@0 {
+                                       reg = <0>;
+                                       remote-endpoint = <&ovl0_in>;
+                               };
+                               mmsys_ext: endpoint@1 {
+                                       reg = <1>;
+                                       remote-endpoint = <&rdma1_in>;
+                               };
+                       };
+               };
+
+               mutex: mutex@14001000 {
+                       compatible =  "mediatek,mt8365-disp-mutex";
+                       reg = <0 0x14001000 0 0x1000>;
+                       interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
                };
 
                smi_common: smi@14002000 {
                        mediatek,larb-id = <0>;
                };
 
+               ovl0: ovl@1400b000 {
+                       compatible = "mediatek,mt8365-disp-ovl", "mediatek,mt8192-disp-ovl";
+                       reg = <0 0x1400b000 0 0x1000>;
+                       clocks = <&mmsys CLK_MM_MM_DISP_OVL0>;
+                       interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_LOW>;
+                       iommus = <&iommu M4U_PORT_DISP_OVL0>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                                       ovl0_in: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&mmsys_main>;
+                                       };
+                               };
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                                       ovl0_out: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&rdma0_in>;
+                                       };
+                               };
+                       };
+               };
+
+               rdma0: rdma@1400d000 {
+                       compatible = "mediatek,mt8365-disp-rdma", "mediatek,mt8183-disp-rdma";
+                       reg = <0 0x1400d000 0 0x1000>;
+                       clocks = <&mmsys CLK_MM_MM_DISP_RDMA0>;
+                       interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_LOW>;
+                       iommus = <&iommu M4U_PORT_DISP_RDMA0>;
+                       mediatek,rdma-fifo-size = <5120>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                                       rdma0_in: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&ovl0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                                       rdma0_out: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&color0_in>;
+                                       };
+                               };
+                       };
+               };
+
+               color0: color@1400f000 {
+                       compatible = "mediatek,mt8365-disp-color", "mediatek,mt8173-disp-color";
+                       reg = <0 0x1400f000 0 0x1000>;
+                       clocks = <&mmsys CLK_MM_MM_DISP_COLOR0>;
+                       interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                                       color0_in: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&rdma0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                                       color0_out: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&ccorr0_in>;
+                                       };
+                               };
+                       };
+               };
+
+               ccorr0: ccorr@14010000 {
+                       compatible = "mediatek,mt8365-disp-ccorr", "mediatek,mt8183-disp-ccorr";
+                       reg = <0 0x14010000 0 0x1000>;
+                       clocks = <&mmsys CLK_MM_MM_DISP_CCORR0>;
+                       interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                                       ccorr0_in: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&color0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                                       ccorr0_out: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&aal0_in>;
+                                       };
+                               };
+                       };
+               };
+
+               aal0: aal@14011000 {
+                       compatible = "mediatek,mt8365-disp-aal", "mediatek,mt8183-disp-aal";
+                       reg = <0 0x14011000 0 0x1000>;
+                       clocks = <&mmsys CLK_MM_MM_DISP_AAL0>;
+                       interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                                       aal0_in: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&ccorr0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                                       aal0_out: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&gamma0_in>;
+                                       };
+                               };
+                       };
+               };
+
+               gamma0: gamma@14012000 {
+                       compatible = "mediatek,mt8365-disp-gamma", "mediatek,mt8183-disp-gamma";
+                       reg = <0 0x14012000 0 0x1000>;
+                       clocks = <&mmsys CLK_MM_MM_DISP_GAMMA0>;
+                       interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                                       gamma0_in: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&aal0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                                       gamma0_out: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&dither0_in>;
+                                       };
+                               };
+                       };
+               };
+
+               dither0: dither@14013000 {
+                       compatible = "mediatek,mt8365-disp-dither", "mediatek,mt8183-disp-dither";
+                       reg = <0 0x14013000 0 0x1000>;
+                       clocks = <&mmsys CLK_MM_MM_DISP_DITHER0>;
+                       interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                                       dither0_in: endpoint@0 {
+                                               reg = <0>;
+                                               remote-endpoint = <&gamma0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                                       dither0_out: endpoint@0 {
+                                               reg = <0>;
+                                       };
+                               };
+                       };
+               };
+
+               dsi0: dsi@14014000 {
+                       compatible = "mediatek,mt8365-dsi", "mediatek,mt8183-dsi";
+                       reg = <0 0x14014000 0 0x1000>;
+                       clock-names = "engine", "digital", "hs";
+                       clocks = <&mmsys CLK_MM_MM_DSI0>,
+                                <&mmsys CLK_MM_DSI0_DIG_DSI>,
+                                <&mipi_tx0>;
+                       interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_LOW>;
+                       phy-names = "dphy";
+                       phys = <&mipi_tx0>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
+               };
+
+               rdma1: rdma@14016000 {
+                       compatible = "mediatek,mt8365-disp-rdma", "mediatek,mt8183-disp-rdma";
+                       reg = <0 0x14016000 0 0x1000>;
+                       clocks = <&mmsys CLK_MM_MM_DISP_RDMA1>;
+                       interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_LOW>;
+                       iommus = <&iommu M4U_PORT_DISP_RDMA1>;
+                       mediatek,rdma-fifo-size = <2048>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                                       rdma1_in: endpoint@1 {
+                                               reg = <1>;
+                                               remote-endpoint = <&mmsys_ext>;
+                                       };
+                               };
+
+                               port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                                       rdma1_out: endpoint@1 {
+                                               reg = <1>;
+                                       };
+                               };
+                       };
+               };
+
+               dpi0: dpi@14018000 {
+                       compatible = "mediatek,mt8365-dpi", "mediatek,mt8192-dpi";
+                       reg = <0 0x14018000 0 0x1000>;
+                       clocks = <&mmsys CLK_MM_DPI0_DPI0>,
+                                <&mmsys CLK_MM_MM_DPI0>,
+                                <&apmixedsys CLK_APMIXED_LVDSPLL>;
+                       clock-names = "pixel", "engine", "pll";
+                       interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
+                       status = "disabled";
+               };
+
                camsys: syscon@15000000 {
                        compatible = "mediatek,mt8365-imgsys", "syscon";
                        reg = <0 0x15000000 0 0x1000>;
diff --git a/src/arm64/mediatek/mt8370-genio-510-evk.dts b/src/arm64/mediatek/mt8370-genio-510-evk.dts
new file mode 100644 (file)
index 0000000..71a8cbe
--- /dev/null
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (c) 2025 Collabora Ltd.
+ * Author: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com>
+ */
+/dts-v1/;
+
+#include "mt8370.dtsi"
+#include "mt8390-genio-common.dtsi"
+
+/ {
+       model = "MediaTek Genio-510 EVK";
+       compatible = "mediatek,mt8370-evk", "mediatek,mt8370", "mediatek,mt8188";
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0 0x40000000 0x1 0x00000000>;
+       };
+};
diff --git a/src/arm64/mediatek/mt8370.dtsi b/src/arm64/mediatek/mt8370.dtsi
new file mode 100644 (file)
index 0000000..cf1a375
--- /dev/null
@@ -0,0 +1,64 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (c) 2025 Collabora Ltd.
+ * Author: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com>
+ */
+
+/dts-v1/;
+#include "mt8188.dtsi"
+
+/ {
+       compatible = "mediatek,mt8370";
+
+       cpus {
+               /delete-node/ cpu@400;
+               /delete-node/ cpu@500;
+
+               cpu-map {
+                       cluster0 {
+                               /delete-node/ core4;
+                               /delete-node/ core5;
+                       };
+               };
+       };
+};
+
+&cpu6 {
+       clock-frequency = <2200000000>;
+};
+
+&cpu7 {
+       clock-frequency = <2200000000>;
+};
+
+&cpu_little0_cooling_map0 {
+       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>;
+};
+
+&cpu_little1_cooling_map0 {
+       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>;
+};
+
+&cpu_little2_cooling_map0 {
+       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>;
+};
+
+&cpu_little3_cooling_map0 {
+       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>;
+};
+
+&ppi_cluster0 {
+       affinity = <&cpu0 &cpu1 &cpu2 &cpu3>;
+};
index 04e4a2f..6123367 100644 (file)
 /dts-v1/;
 
 #include "mt8188.dtsi"
-#include "mt6359.dtsi"
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-#include <dt-bindings/pinctrl/mediatek,mt8188-pinfunc.h>
-#include <dt-bindings/regulator/mediatek,mt6360-regulator.h>
-#include <dt-bindings/spmi/spmi.h>
-#include <dt-bindings/usb/pd.h>
+#include "mt8390-genio-common.dtsi"
 
 / {
        model = "MediaTek Genio-700 EVK";
        compatible = "mediatek,mt8390-evk", "mediatek,mt8390",
                     "mediatek,mt8188";
 
-       aliases {
-               ethernet0 = &eth;
-               i2c0 = &i2c0;
-               i2c1 = &i2c1;
-               i2c2 = &i2c2;
-               i2c3 = &i2c3;
-               i2c4 = &i2c4;
-               i2c5 = &i2c5;
-               i2c6 = &i2c6;
-               mmc0 = &mmc0;
-               mmc1 = &mmc1;
-               serial0 = &uart0;
-       };
-
-       chosen {
-               stdout-path = "serial0:921600n8";
-       };
-
-       firmware {
-               optee {
-                       compatible = "linaro,optee-tz";
-                       method = "smc";
-               };
-       };
-
        memory@40000000 {
                device_type = "memory";
                reg = <0 0x40000000 0x2 0x00000000>;
        };
-
-       reserved-memory {
-               #address-cells = <2>;
-               #size-cells = <2>;
-               ranges;
-
-               /*
-                * 12 MiB reserved for OP-TEE (BL32)
-                * +-----------------------+ 0x43e0_0000
-                * |      SHMEM 2MiB       |
-                * +-----------------------+ 0x43c0_0000
-                * |        | TA_RAM  8MiB |
-                * + TZDRAM +--------------+ 0x4340_0000
-                * |        | TEE_RAM 2MiB |
-                * +-----------------------+ 0x4320_0000
-                */
-               optee_reserved: optee@43200000 {
-                       no-map;
-                       reg = <0 0x43200000 0 0x00c00000>;
-               };
-
-               scp_mem: memory@50000000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0 0x50000000 0 0x2900000>;
-                       no-map;
-               };
-
-               /* 2 MiB reserved for ARM Trusted Firmware (BL31) */
-               bl31_secmon_reserved: memory@54600000 {
-                       no-map;
-                       reg = <0 0x54600000 0x0 0x200000>;
-               };
-
-               apu_mem: memory@55000000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0 0x55000000 0 0x1400000>; /* 20 MB */
-               };
-
-               vpu_mem: memory@57000000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0 0x57000000 0 0x1400000>; /* 20 MB */
-               };
-
-               adsp_mem: memory@60000000 {
-                       compatible = "shared-dma-pool";
-                       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;
-               };
-       };
-
-       common_fixed_5v: regulator-0 {
-               compatible = "regulator-fixed";
-               regulator-name = "vdd_5v";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               gpio = <&pio 10 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-               regulator-always-on;
-               vin-supply = <&reg_vsys>;
-       };
-
-       edp_panel_fixed_3v3: regulator-1 {
-               compatible = "regulator-fixed";
-               regulator-name = "vedp_3v3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               enable-active-high;
-               gpio = <&pio 15 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&edp_panel_3v3_en_pins>;
-               vin-supply = <&reg_vsys>;
-       };
-
-       gpio_fixed_3v3: regulator-2 {
-               compatible = "regulator-fixed";
-               regulator-name = "ext_3v3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               gpio = <&pio 9 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-               regulator-always-on;
-               vin-supply = <&reg_vsys>;
-       };
-
-       /* system wide 4.2V power rail from charger */
-       reg_vsys: regulator-vsys {
-               compatible = "regulator-fixed";
-               regulator-name = "vsys";
-               regulator-always-on;
-               regulator-boot-on;
-       };
-
-       /* used by mmc2 */
-       sdio_fixed_1v8: regulator-3 {
-               compatible = "regulator-fixed";
-               regulator-name = "vio18_conn";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               enable-active-high;
-               regulator-always-on;
-       };
-
-       /* used by mmc2 */
-       sdio_fixed_3v3: regulator-4 {
-               compatible = "regulator-fixed";
-               regulator-name = "wifi_3v3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               gpio = <&pio 74 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-               regulator-always-on;
-               vin-supply = <&reg_vsys>;
-       };
-
-       touch0_fixed_3v3: regulator-5 {
-               compatible = "regulator-fixed";
-               regulator-name = "vio33_tp1";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               gpio = <&pio 119 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-               vin-supply = <&reg_vsys>;
-       };
-
-       usb_hub_fixed_3v3: regulator-6 {
-               compatible = "regulator-fixed";
-               regulator-name = "vhub_3v3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               gpio = <&pio 112 GPIO_ACTIVE_HIGH>; /* HUB_3V3_EN */
-               startup-delay-us = <10000>;
-               enable-active-high;
-               vin-supply = <&reg_vsys>;
-       };
-
-       usb_p0_vbus: regulator-7 {
-               compatible = "regulator-fixed";
-               regulator-name = "vbus_p0";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               gpio = <&pio 84 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-               vin-supply = <&reg_vsys>;
-       };
-
-       usb_p1_vbus: regulator-8 {
-               compatible = "regulator-fixed";
-               regulator-name = "vbus_p1";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               gpio = <&pio 87 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-               vin-supply = <&reg_vsys>;
-       };
-
-       /* used by ssusb2 */
-       usb_p2_vbus: regulator-9 {
-               compatible = "regulator-fixed";
-               regulator-name = "wifi_3v3";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               enable-active-high;
-       };
-};
-
-&adsp {
-       memory-region = <&adsp_dma_mem>, <&adsp_mem>;
-       status = "okay";
-};
-
-&afe {
-       memory-region = <&afe_dma_mem>;
-       status = "okay";
-};
-
-&gpu {
-       mali-supply = <&mt6359_vproc2_buck_reg>;
-       status = "okay";
-};
-
-&i2c0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2c0_pins>;
-       clock-frequency = <400000>;
-       status = "okay";
-
-       touchscreen@5d {
-               compatible = "goodix,gt9271";
-               reg = <0x5d>;
-               interrupt-parent = <&pio>;
-               interrupts-extended = <&pio 6 IRQ_TYPE_EDGE_RISING>;
-               irq-gpios = <&pio 6 GPIO_ACTIVE_HIGH>;
-               reset-gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
-               AVDD28-supply = <&touch0_fixed_3v3>;
-               VDDIO-supply = <&mt6359_vio18_ldo_reg>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&touch_pins>;
-       };
-};
-
-&i2c1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2c1_pins>;
-       clock-frequency = <400000>;
-       status = "okay";
-};
-
-&i2c2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2c2_pins>;
-       clock-frequency = <400000>;
-       status = "okay";
-};
-
-&i2c3 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2c3_pins>;
-       clock-frequency = <400000>;
-       status = "okay";
-};
-
-&i2c4 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2c4_pins>;
-       clock-frequency = <1000000>;
-       status = "okay";
-};
-
-&i2c5 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2c5_pins>;
-       clock-frequency = <400000>;
-       status = "okay";
-};
-
-&i2c6 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2c6_pins>;
-       clock-frequency = <400000>;
-       status = "okay";
-};
-
-&mfg0 {
-       domain-supply = <&mt6359_vproc2_buck_reg>;
-};
-
-&mfg1 {
-       domain-supply = <&mt6359_vsram_others_ldo_reg>;
-};
-
-&mmc0 {
-       status = "okay";
-       pinctrl-names = "default", "state_uhs";
-       pinctrl-0 = <&mmc0_default_pins>;
-       pinctrl-1 = <&mmc0_uhs_pins>;
-       bus-width = <8>;
-       max-frequency = <200000000>;
-       cap-mmc-highspeed;
-       mmc-hs200-1_8v;
-       mmc-hs400-1_8v;
-       supports-cqe;
-       cap-mmc-hw-reset;
-       no-sdio;
-       no-sd;
-       hs400-ds-delay = <0x1481b>;
-       vmmc-supply = <&mt6359_vemc_1_ldo_reg>;
-       vqmmc-supply = <&mt6359_vufs_ldo_reg>;
-       non-removable;
-};
-
-&mmc1 {
-       status = "okay";
-       pinctrl-names = "default", "state_uhs";
-       pinctrl-0 = <&mmc1_default_pins>;
-       pinctrl-1 = <&mmc1_uhs_pins>;
-       bus-width = <4>;
-       max-frequency = <200000000>;
-       cap-sd-highspeed;
-       sd-uhs-sdr50;
-       sd-uhs-sdr104;
-       no-mmc;
-       no-sdio;
-       cd-gpios = <&pio 2 GPIO_ACTIVE_LOW>;
-       vmmc-supply = <&mt6359_vpa_buck_reg>;
-       vqmmc-supply = <&mt6359_vsim1_ldo_reg>;
-};
-
-&mt6359_vbbck_ldo_reg {
-       regulator-always-on;
-};
-
-&mt6359_vcn18_ldo_reg {
-       regulator-name = "vcn18_pmu";
-       regulator-always-on;
-};
-
-&mt6359_vcn33_2_bt_ldo_reg {
-       regulator-name = "vcn33_2_pmu";
-       regulator-always-on;
-};
-
-&mt6359_vcore_buck_reg {
-       regulator-name = "dvdd_proc_l";
-       regulator-always-on;
-};
-
-&mt6359_vgpu11_buck_reg {
-       regulator-name = "dvdd_core";
-       regulator-always-on;
-};
-
-&mt6359_vpa_buck_reg {
-       regulator-name = "vpa_pmu";
-       regulator-max-microvolt = <3100000>;
-};
-
-&mt6359_vproc2_buck_reg {
-       /* The name "vgpu" is required by mtk-regulator-coupler */
-       regulator-name = "vgpu";
-       regulator-min-microvolt = <550000>;
-       regulator-max-microvolt = <800000>;
-       regulator-coupled-with = <&mt6359_vsram_others_ldo_reg>;
-       regulator-coupled-max-spread = <6250>;
-};
-
-&mt6359_vpu_buck_reg {
-       regulator-name = "dvdd_adsp";
-       regulator-always-on;
-};
-
-&mt6359_vrf12_ldo_reg {
-       regulator-name = "va12_abb2_pmu";
-       regulator-always-on;
-};
-
-&mt6359_vsim1_ldo_reg {
-       regulator-name = "vsim1_pmu";
-       regulator-enable-ramp-delay = <480>;
-};
-
-&mt6359_vsram_others_ldo_reg {
-       /* The name "vsram_gpu" is required by mtk-regulator-coupler */
-       regulator-name = "vsram_gpu";
-       regulator-min-microvolt = <750000>;
-       regulator-max-microvolt = <800000>;
-       regulator-coupled-with = <&mt6359_vproc2_buck_reg>;
-       regulator-coupled-max-spread = <6250>;
-};
-
-&mt6359_vufs_ldo_reg {
-       regulator-name = "vufs18_pmu";
-       regulator-always-on;
-};
-
-&mt6359codec {
-       mediatek,mic-type-0 = <1>; /* ACC */
-       mediatek,mic-type-1 = <3>; /* DCC */
-};
-
-&pcie {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pcie_pins_default>;
-       status = "okay";
-};
-
-&pciephy {
-       status = "okay";
-};
-
-&pio {
-       audio_default_pins: audio-default-pins {
-               pins-cmd-dat {
-                       pinmux = <PINMUX_GPIO101__FUNC_O_AUD_CLK_MOSI>,
-                                <PINMUX_GPIO102__FUNC_O_AUD_SYNC_MOSI>,
-                                <PINMUX_GPIO103__FUNC_O_AUD_DAT_MOSI0>,
-                                <PINMUX_GPIO104__FUNC_O_AUD_DAT_MOSI1>,
-                                <PINMUX_GPIO105__FUNC_I0_AUD_DAT_MISO0>,
-                                <PINMUX_GPIO106__FUNC_I0_AUD_DAT_MISO1>,
-                                <PINMUX_GPIO107__FUNC_B0_I2SIN_MCK>,
-                                <PINMUX_GPIO108__FUNC_B0_I2SIN_BCK>,
-                                <PINMUX_GPIO109__FUNC_B0_I2SIN_WS>,
-                                <PINMUX_GPIO110__FUNC_I0_I2SIN_D0>,
-                                <PINMUX_GPIO114__FUNC_O_I2SO2_MCK>,
-                                <PINMUX_GPIO115__FUNC_B0_I2SO2_BCK>,
-                                <PINMUX_GPIO116__FUNC_B0_I2SO2_WS>,
-                                <PINMUX_GPIO117__FUNC_O_I2SO2_D0>,
-                                <PINMUX_GPIO118__FUNC_O_I2SO2_D1>,
-                                <PINMUX_GPIO121__FUNC_B0_PCM_CLK>,
-                                <PINMUX_GPIO122__FUNC_B0_PCM_SYNC>,
-                                <PINMUX_GPIO124__FUNC_I0_PCM_DI>,
-                                <PINMUX_GPIO125__FUNC_O_DMIC1_CLK>,
-                                <PINMUX_GPIO126__FUNC_I0_DMIC1_DAT>,
-                                <PINMUX_GPIO128__FUNC_O_DMIC2_CLK>,
-                                <PINMUX_GPIO129__FUNC_I0_DMIC2_DAT>;
-               };
-       };
-
-       dptx_pins: dptx-pins {
-               pins-cmd-dat {
-                       pinmux = <PINMUX_GPIO46__FUNC_I0_DP_TX_HPD>;
-                       bias-pull-up;
-               };
-       };
-
-       edp_panel_3v3_en_pins: edp-panel-3v3-en-pins {
-               pins1 {
-                       pinmux = <PINMUX_GPIO15__FUNC_B_GPIO15>;
-                       output-high;
-               };
-       };
-
-       eth_default_pins: eth-default-pins {
-               pins-cc {
-                       pinmux = <PINMUX_GPIO139__FUNC_B0_GBE_TXC>,
-                                <PINMUX_GPIO140__FUNC_I0_GBE_RXC>,
-                                <PINMUX_GPIO141__FUNC_I0_GBE_RXDV>,
-                                <PINMUX_GPIO142__FUNC_O_GBE_TXEN>;
-                       drive-strength = <8>;
-               };
-
-               pins-mdio {
-                       pinmux = <PINMUX_GPIO143__FUNC_O_GBE_MDC>,
-                                <PINMUX_GPIO144__FUNC_B1_GBE_MDIO>;
-                       drive-strength = <8>;
-                       input-enable;
-               };
-
-               pins-power {
-                       pinmux = <PINMUX_GPIO145__FUNC_B_GPIO145>,
-                                <PINMUX_GPIO146__FUNC_B_GPIO146>;
-                       output-high;
-               };
-
-               pins-rxd {
-                       pinmux = <PINMUX_GPIO135__FUNC_I0_GBE_RXD3>,
-                                <PINMUX_GPIO136__FUNC_I0_GBE_RXD2>,
-                                <PINMUX_GPIO137__FUNC_I0_GBE_RXD1>,
-                                <PINMUX_GPIO138__FUNC_I0_GBE_RXD0>;
-                       drive-strength = <8>;
-               };
-
-               pins-txd {
-                       pinmux = <PINMUX_GPIO131__FUNC_O_GBE_TXD3>,
-                                <PINMUX_GPIO132__FUNC_O_GBE_TXD2>,
-                                <PINMUX_GPIO133__FUNC_O_GBE_TXD1>,
-                                <PINMUX_GPIO134__FUNC_O_GBE_TXD0>;
-                       drive-strength = <8>;
-               };
-       };
-
-       eth_sleep_pins: eth-sleep-pins {
-               pins-cc {
-                       pinmux = <PINMUX_GPIO139__FUNC_B_GPIO139>,
-                                <PINMUX_GPIO140__FUNC_B_GPIO140>,
-                                <PINMUX_GPIO141__FUNC_B_GPIO141>,
-                                <PINMUX_GPIO142__FUNC_B_GPIO142>;
-               };
-
-               pins-mdio {
-                       pinmux = <PINMUX_GPIO143__FUNC_B_GPIO143>,
-                                <PINMUX_GPIO144__FUNC_B_GPIO144>;
-                       input-disable;
-                       bias-disable;
-               };
-
-               pins-rxd {
-                       pinmux = <PINMUX_GPIO135__FUNC_B_GPIO135>,
-                                <PINMUX_GPIO136__FUNC_B_GPIO136>,
-                                <PINMUX_GPIO137__FUNC_B_GPIO137>,
-                                <PINMUX_GPIO138__FUNC_B_GPIO138>;
-               };
-
-               pins-txd {
-                       pinmux = <PINMUX_GPIO131__FUNC_B_GPIO131>,
-                                <PINMUX_GPIO132__FUNC_B_GPIO132>,
-                                <PINMUX_GPIO133__FUNC_B_GPIO133>,
-                                <PINMUX_GPIO134__FUNC_B_GPIO134>;
-               };
-       };
-
-       i2c0_pins: i2c0-pins {
-               pins {
-                       pinmux = <PINMUX_GPIO56__FUNC_B1_SDA0>,
-                                <PINMUX_GPIO55__FUNC_B1_SCL0>;
-                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
-                       drive-strength-microamp = <1000>;
-               };
-       };
-
-       i2c1_pins: i2c1-pins {
-               pins {
-                       pinmux = <PINMUX_GPIO58__FUNC_B1_SDA1>,
-                                <PINMUX_GPIO57__FUNC_B1_SCL1>;
-                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
-                       drive-strength-microamp = <1000>;
-               };
-       };
-
-       i2c2_pins: i2c2-pins {
-               pins {
-                       pinmux = <PINMUX_GPIO60__FUNC_B1_SDA2>,
-                                <PINMUX_GPIO59__FUNC_B1_SCL2>;
-                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
-                       drive-strength-microamp = <1000>;
-               };
-       };
-
-       i2c3_pins: i2c3-pins {
-               pins {
-                       pinmux = <PINMUX_GPIO62__FUNC_B1_SDA3>,
-                                <PINMUX_GPIO61__FUNC_B1_SCL3>;
-                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
-                       drive-strength-microamp = <1000>;
-               };
-       };
-
-       i2c4_pins: i2c4-pins {
-               pins {
-                       pinmux = <PINMUX_GPIO64__FUNC_B1_SDA4>,
-                                <PINMUX_GPIO63__FUNC_B1_SCL4>;
-                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
-                       drive-strength-microamp = <1000>;
-               };
-       };
-
-       i2c5_pins: i2c5-pins {
-               pins {
-                       pinmux = <PINMUX_GPIO66__FUNC_B1_SDA5>,
-                                <PINMUX_GPIO65__FUNC_B1_SCL5>;
-                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
-                       drive-strength-microamp = <1000>;
-               };
-       };
-
-       i2c6_pins: i2c6-pins {
-               pins {
-                       pinmux = <PINMUX_GPIO68__FUNC_B1_SDA6>,
-                                <PINMUX_GPIO67__FUNC_B1_SCL6>;
-                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
-                       drive-strength-microamp = <1000>;
-               };
-       };
-
-       gpio_key_pins: gpio-key-pins {
-               pins {
-                       pinmux = <PINMUX_GPIO42__FUNC_B1_KPCOL0>,
-                                <PINMUX_GPIO43__FUNC_B1_KPCOL1>,
-                                <PINMUX_GPIO44__FUNC_B1_KPROW0>;
-               };
-       };
-
-       mmc0_default_pins: mmc0-default-pins {
-               pins-clk {
-                       pinmux = <PINMUX_GPIO157__FUNC_B1_MSDC0_CLK>;
-                       drive-strength = <6>;
-                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
-               };
-
-               pins-cmd-dat {
-                       pinmux = <PINMUX_GPIO161__FUNC_B1_MSDC0_DAT0>,
-                                <PINMUX_GPIO160__FUNC_B1_MSDC0_DAT1>,
-                                <PINMUX_GPIO159__FUNC_B1_MSDC0_DAT2>,
-                                <PINMUX_GPIO158__FUNC_B1_MSDC0_DAT3>,
-                                <PINMUX_GPIO154__FUNC_B1_MSDC0_DAT4>,
-                                <PINMUX_GPIO153__FUNC_B1_MSDC0_DAT5>,
-                                <PINMUX_GPIO152__FUNC_B1_MSDC0_DAT6>,
-                                <PINMUX_GPIO151__FUNC_B1_MSDC0_DAT7>,
-                                <PINMUX_GPIO156__FUNC_B1_MSDC0_CMD>;
-                       input-enable;
-                       drive-strength = <6>;
-                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-               };
-
-               pins-rst {
-                       pinmux = <PINMUX_GPIO155__FUNC_O_MSDC0_RSTB>;
-                       drive-strength = <6>;
-                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-               };
-       };
-
-       mmc0_uhs_pins: mmc0-uhs-pins {
-               pins-clk {
-                       pinmux = <PINMUX_GPIO157__FUNC_B1_MSDC0_CLK>;
-                       drive-strength = <8>;
-                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
-               };
-
-               pins-cmd-dat {
-                       pinmux = <PINMUX_GPIO161__FUNC_B1_MSDC0_DAT0>,
-                                <PINMUX_GPIO160__FUNC_B1_MSDC0_DAT1>,
-                                <PINMUX_GPIO159__FUNC_B1_MSDC0_DAT2>,
-                                <PINMUX_GPIO158__FUNC_B1_MSDC0_DAT3>,
-                                <PINMUX_GPIO154__FUNC_B1_MSDC0_DAT4>,
-                                <PINMUX_GPIO153__FUNC_B1_MSDC0_DAT5>,
-                                <PINMUX_GPIO152__FUNC_B1_MSDC0_DAT6>,
-                                <PINMUX_GPIO151__FUNC_B1_MSDC0_DAT7>,
-                                <PINMUX_GPIO156__FUNC_B1_MSDC0_CMD>;
-                       input-enable;
-                       drive-strength = <8>;
-                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-               };
-
-               pins-ds {
-                       pinmux = <PINMUX_GPIO162__FUNC_B0_MSDC0_DSL>;
-                       drive-strength = <8>;
-                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
-               };
-
-               pins-rst {
-                       pinmux = <PINMUX_GPIO155__FUNC_O_MSDC0_RSTB>;
-                       drive-strength = <8>;
-                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-               };
-       };
-
-       mmc1_default_pins: mmc1-default-pins {
-               pins-clk {
-                       pinmux = <PINMUX_GPIO164__FUNC_B1_MSDC1_CLK>;
-                       drive-strength = <6>;
-                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
-               };
-
-               pins-cmd-dat {
-                       pinmux = <PINMUX_GPIO163__FUNC_B1_MSDC1_CMD>,
-                                <PINMUX_GPIO165__FUNC_B1_MSDC1_DAT0>,
-                                <PINMUX_GPIO166__FUNC_B1_MSDC1_DAT1>,
-                                <PINMUX_GPIO167__FUNC_B1_MSDC1_DAT2>,
-                                <PINMUX_GPIO168__FUNC_B1_MSDC1_DAT3>;
-                       input-enable;
-                       drive-strength = <6>;
-                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-               };
-
-               pins-insert {
-                       pinmux = <PINMUX_GPIO2__FUNC_B_GPIO2>;
-                       bias-pull-up;
-               };
-       };
-
-       mmc1_uhs_pins: mmc1-uhs-pins {
-               pins-clk {
-                       pinmux = <PINMUX_GPIO164__FUNC_B1_MSDC1_CLK>;
-                       drive-strength = <6>;
-                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
-               };
-
-               pins-cmd-dat {
-                       pinmux = <PINMUX_GPIO163__FUNC_B1_MSDC1_CMD>,
-                                <PINMUX_GPIO165__FUNC_B1_MSDC1_DAT0>,
-                                <PINMUX_GPIO166__FUNC_B1_MSDC1_DAT1>,
-                                <PINMUX_GPIO167__FUNC_B1_MSDC1_DAT2>,
-                                <PINMUX_GPIO168__FUNC_B1_MSDC1_DAT3>;
-                       input-enable;
-                       drive-strength = <6>;
-                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-               };
-       };
-
-       mmc2_default_pins: mmc2-default-pins {
-               pins-clk {
-                       pinmux = <PINMUX_GPIO170__FUNC_B1_MSDC2_CLK>;
-                       drive-strength = <4>;
-                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
-               };
-
-               pins-cmd-dat {
-                       pinmux = <PINMUX_GPIO169__FUNC_B1_MSDC2_CMD>,
-                                <PINMUX_GPIO171__FUNC_B1_MSDC2_DAT0>,
-                                <PINMUX_GPIO172__FUNC_B1_MSDC2_DAT1>,
-                                <PINMUX_GPIO173__FUNC_B1_MSDC2_DAT2>,
-                                <PINMUX_GPIO174__FUNC_B1_MSDC2_DAT3>;
-                       input-enable;
-                       drive-strength = <6>;
-                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-               };
-
-               pins-pcm {
-                       pinmux = <PINMUX_GPIO123__FUNC_O_PCM_DO>;
-               };
-       };
-
-       mmc2_uhs_pins: mmc2-uhs-pins {
-               pins-clk {
-                       pinmux = <PINMUX_GPIO170__FUNC_B1_MSDC2_CLK>;
-                       drive-strength = <4>;
-                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
-               };
-
-               pins-cmd-dat {
-                       pinmux = <PINMUX_GPIO169__FUNC_B1_MSDC2_CMD>,
-                                <PINMUX_GPIO171__FUNC_B1_MSDC2_DAT0>,
-                                <PINMUX_GPIO172__FUNC_B1_MSDC2_DAT1>,
-                                <PINMUX_GPIO173__FUNC_B1_MSDC2_DAT2>,
-                                <PINMUX_GPIO174__FUNC_B1_MSDC2_DAT3>;
-                       input-enable;
-                       drive-strength = <6>;
-                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-               };
-       };
-
-       mmc2_eint_pins: mmc2-eint-pins {
-               pins-dat1 {
-                       pinmux = <PINMUX_GPIO172__FUNC_B_GPIO172>;
-                       input-enable;
-                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-               };
-       };
-
-       mmc2_dat1_pins: mmc2-dat1-pins {
-               pins-dat1 {
-                       pinmux = <PINMUX_GPIO172__FUNC_B1_MSDC2_DAT1>;
-                       input-enable;
-                       drive-strength = <6>;
-                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-               };
-       };
-
-       panel_default_pins: panel-default-pins {
-               pins-dcdc {
-                       pinmux = <PINMUX_GPIO45__FUNC_B_GPIO45>;
-                       output-low;
-               };
-
-               pins-en {
-                       pinmux = <PINMUX_GPIO111__FUNC_B_GPIO111>;
-                       output-low;
-               };
-
-               pins-rst {
-                       pinmux = <PINMUX_GPIO25__FUNC_B_GPIO25>;
-                       output-high;
-               };
-       };
-
-       pcie_pins_default: pcie-default {
-               mux {
-                       pinmux = <PINMUX_GPIO47__FUNC_I1_WAKEN>,
-                                <PINMUX_GPIO48__FUNC_O_PERSTN>,
-                                <PINMUX_GPIO49__FUNC_B1_CLKREQN>;
-                       bias-pull-up;
-               };
-       };
-
-       rt1715_int_pins: rt1715-int-pins {
-               pins_cmd0_dat {
-                       pinmux = <PINMUX_GPIO12__FUNC_B_GPIO12>;
-                       bias-pull-up;
-                       input-enable;
-               };
-       };
-
-       spi0_pins: spi0-pins {
-               pins-spi {
-                       pinmux = <PINMUX_GPIO69__FUNC_O_SPIM0_CSB>,
-                               <PINMUX_GPIO70__FUNC_O_SPIM0_CLK>,
-                               <PINMUX_GPIO71__FUNC_B0_SPIM0_MOSI>,
-                               <PINMUX_GPIO72__FUNC_B0_SPIM0_MISO>;
-                       bias-disable;
-               };
-       };
-
-       spi1_pins: spi1-pins {
-               pins-spi {
-                       pinmux = <PINMUX_GPIO75__FUNC_O_SPIM1_CSB>,
-                               <PINMUX_GPIO76__FUNC_O_SPIM1_CLK>,
-                               <PINMUX_GPIO77__FUNC_B0_SPIM1_MOSI>,
-                               <PINMUX_GPIO78__FUNC_B0_SPIM1_MISO>;
-                       bias-disable;
-               };
-       };
-
-       spi2_pins: spi2-pins {
-               pins-spi {
-                       pinmux = <PINMUX_GPIO79__FUNC_O_SPIM2_CSB>,
-                               <PINMUX_GPIO80__FUNC_O_SPIM2_CLK>,
-                               <PINMUX_GPIO81__FUNC_B0_SPIM2_MOSI>,
-                               <PINMUX_GPIO82__FUNC_B0_SPIM2_MISO>;
-                       bias-disable;
-               };
-       };
-
-       touch_pins: touch-pins {
-               pins-irq {
-                       pinmux = <PINMUX_GPIO6__FUNC_B_GPIO6>;
-                       input-enable;
-                       bias-disable;
-               };
-
-               pins-reset {
-                       pinmux = <PINMUX_GPIO5__FUNC_B_GPIO5>;
-                       output-high;
-               };
-       };
-
-       uart0_pins: uart0-pins {
-               pins {
-                       pinmux = <PINMUX_GPIO31__FUNC_O_UTXD0>,
-                                <PINMUX_GPIO32__FUNC_I1_URXD0>;
-                       bias-pull-up;
-               };
-       };
-
-       uart1_pins: uart1-pins {
-               pins {
-                       pinmux = <PINMUX_GPIO33__FUNC_O_UTXD1>,
-                                <PINMUX_GPIO34__FUNC_I1_URXD1>;
-                       bias-pull-up;
-               };
-       };
-
-       uart2_pins: uart2-pins {
-               pins {
-                       pinmux = <PINMUX_GPIO35__FUNC_O_UTXD2>,
-                                <PINMUX_GPIO36__FUNC_I1_URXD2>;
-                       bias-pull-up;
-               };
-       };
-
-       usb_default_pins: usb-default-pins {
-               pins-iddig {
-                       pinmux = <PINMUX_GPIO83__FUNC_B_GPIO83>;
-                       input-enable;
-                       bias-pull-up;
-               };
-
-               pins-valid {
-                       pinmux = <PINMUX_GPIO85__FUNC_I0_VBUSVALID>;
-                       input-enable;
-               };
-
-               pins-vbus {
-                       pinmux = <PINMUX_GPIO84__FUNC_O_USB_DRVVBUS>;
-                       output-high;
-               };
-
-       };
-
-       usb1_default_pins: usb1-default-pins {
-               pins-valid {
-                       pinmux = <PINMUX_GPIO88__FUNC_I0_VBUSVALID_1P>;
-                       input-enable;
-               };
-
-               pins-usb-hub-3v3-en {
-                       pinmux = <PINMUX_GPIO112__FUNC_B_GPIO112>;
-                       output-high;
-               };
-       };
-
-       wifi_pwrseq_pins: wifi-pwrseq-pins {
-               pins-wifi-enable {
-                       pinmux = <PINMUX_GPIO127__FUNC_B_GPIO127>;
-                       output-low;
-               };
-       };
-};
-
-&eth {
-       phy-mode ="rgmii-id";
-       phy-handle = <&ethernet_phy0>;
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&eth_default_pins>;
-       pinctrl-1 = <&eth_sleep_pins>;
-       mediatek,mac-wol;
-       snps,reset-gpio = <&pio 147 GPIO_ACTIVE_HIGH>;
-       snps,reset-delays-us = <0 10000 10000>;
-       status = "okay";
-};
-
-&eth_mdio {
-       ethernet_phy0: ethernet-phy@1 {
-               compatible = "ethernet-phy-id001c.c916";
-               reg = <0x1>;
-       };
-};
-
-&pmic {
-       interrupt-parent = <&pio>;
-       interrupts = <222 IRQ_TYPE_LEVEL_HIGH>;
-
-       mt6359keys: keys {
-               compatible = "mediatek,mt6359-keys";
-               mediatek,long-press-mode = <1>;
-               power-off-time-sec = <0>;
-
-               power-key {
-                       linux,keycodes = <KEY_POWER>;
-                       wakeup-source;
-               };
-       };
-};
-
-&scp {
-       memory-region = <&scp_mem>;
-       status = "okay";
-};
-
-&sound {
-       compatible = "mediatek,mt8390-mt6359-evk", "mediatek,mt8188-mt6359-evb";
-       model = "mt8390-evk";
-       pinctrl-names = "default";
-       pinctrl-0 = <&audio_default_pins>;
-       audio-routing =
-               "Headphone", "Headphone L",
-               "Headphone", "Headphone R";
-       mediatek,adsp = <&adsp>;
-       status = "okay";
-
-       dai-link-0 {
-               link-name = "DL_SRC_BE";
-
-               codec {
-                       sound-dai = <&pmic 0>;
-               };
-       };
-};
-
-&spi2 {
-       pinctrl-0 = <&spi2_pins>;
-       pinctrl-names = "default";
-       mediatek,pad-select = <0>;
-       #address-cells = <1>;
-       #size-cells = <0>;
-       status = "okay";
 };
 
-&uart0 {
-       pinctrl-0 = <&uart0_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-};
-
-&uart1 {
-       pinctrl-0 = <&uart1_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-};
-
-&uart2 {
-       pinctrl-0 = <&uart2_pins>;
-       pinctrl-names = "default";
-       status = "okay";
-};
-
-&u3phy0 {
-       status = "okay";
-};
-
-&u3phy1 {
-       status = "okay";
-};
-
-&u3phy2 {
-       status = "okay";
-};
-
-&xhci0 {
-       status = "okay";
-       vusb33-supply = <&mt6359_vusb_ldo_reg>;
-};
-
-&xhci1 {
-       status = "okay";
-       vusb33-supply = <&mt6359_vusb_ldo_reg>;
-       #address-cells = <1>;
-       #size-cells = <0>;
-
-       hub_2_0: hub@1 {
-               compatible = "usb451,8025";
-               reg = <1>;
-               peer-hub = <&hub_3_0>;
-               reset-gpios = <&pio 7 GPIO_ACTIVE_HIGH>;
-               vdd-supply = <&usb_hub_fixed_3v3>;
-       };
-
-       hub_3_0: hub@2 {
-               compatible = "usb451,8027";
-               reg = <2>;
-               peer-hub = <&hub_2_0>;
-               reset-gpios = <&pio 7 GPIO_ACTIVE_HIGH>;
-               vdd-supply = <&usb_hub_fixed_3v3>;
-       };
-};
-
-&xhci2 {
-       status = "okay";
-       vusb33-supply = <&mt6359_vusb_ldo_reg>;
-       vbus-supply = <&sdio_fixed_3v3>; /* wifi_3v3 */
-};
diff --git a/src/arm64/mediatek/mt8390-genio-common.dtsi b/src/arm64/mediatek/mt8390-genio-common.dtsi
new file mode 100644 (file)
index 0000000..60139e6
--- /dev/null
@@ -0,0 +1,1223 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2023 MediaTek Inc.
+ * Author: Chris Chen <chris-qj.chen@mediatek.com>
+ *         Pablo Sun <pablo.sun@mediatek.com>
+ *         Macpaul Lin <macpaul.lin@mediatek.com>
+ *
+ * Copyright (C) 2025 Collabora Ltd.
+ *                    Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com>
+ *                    AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>   
+ */
+
+#include "mt6359.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/mediatek,mt8188-pinfunc.h>
+#include <dt-bindings/regulator/mediatek,mt6360-regulator.h>
+#include <dt-bindings/spmi/spmi.h>
+#include <dt-bindings/usb/pd.h>
+
+/ {
+       aliases {
+               ethernet0 = &eth;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
+               i2c5 = &i2c5;
+               i2c6 = &i2c6;
+               mmc0 = &mmc0;
+               mmc1 = &mmc1;
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:921600n8";
+       };
+
+       dmic_codec: dmic-codec {
+               #sound-dai-cells = <0>;
+               compatible = "dmic-codec";
+               num-channels = <2>;
+               wakeup-delay-ms = <30>;
+       };
+
+       firmware {
+               optee {
+                       compatible = "linaro,optee-tz";
+                       method = "smc";
+               };
+       };
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /*
+                * 12 MiB reserved for OP-TEE (BL32)
+                * +-----------------------+ 0x43e0_0000
+                * |      SHMEM 2MiB       |
+                * +-----------------------+ 0x43c0_0000
+                * |        | TA_RAM  8MiB |
+                * + TZDRAM +--------------+ 0x4340_0000
+                * |        | TEE_RAM 2MiB |
+                * +-----------------------+ 0x4320_0000
+                */
+               optee_reserved: optee@43200000 {
+                       no-map;
+                       reg = <0 0x43200000 0 0x00c00000>;
+               };
+
+               scp_mem: memory@50000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x50000000 0 0x2900000>;
+                       no-map;
+               };
+
+               /* 2 MiB reserved for ARM Trusted Firmware (BL31) */
+               bl31_secmon_reserved: memory@54600000 {
+                       no-map;
+                       reg = <0 0x54600000 0x0 0x200000>;
+               };
+
+               apu_mem: memory@55000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x55000000 0 0x1400000>; /* 20 MB */
+               };
+
+               vpu_mem: memory@57000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x57000000 0 0x1400000>; /* 20 MB */
+               };
+
+               adsp_mem: memory@60000000 {
+                       compatible = "shared-dma-pool";
+                       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;
+               };
+       };
+
+       common_fixed_5v: regulator-0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&pio 10 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+               vin-supply = <&reg_vsys>;
+       };
+
+       edp_panel_fixed_3v3: regulator-1 {
+               compatible = "regulator-fixed";
+               regulator-name = "vedp_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               enable-active-high;
+               gpio = <&pio 15 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&edp_panel_3v3_en_pins>;
+               vin-supply = <&reg_vsys>;
+       };
+
+       gpio_fixed_3v3: regulator-2 {
+               compatible = "regulator-fixed";
+               regulator-name = "ext_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&pio 9 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+               vin-supply = <&reg_vsys>;
+       };
+
+       /* system wide 4.2V power rail from charger */
+       reg_vsys: regulator-vsys {
+               compatible = "regulator-fixed";
+               regulator-name = "vsys";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       /* used by mmc2 */
+       sdio_fixed_1v8: regulator-3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vio18_conn";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               enable-active-high;
+               regulator-always-on;
+       };
+
+       /* used by mmc2 */
+       sdio_fixed_3v3: regulator-4 {
+               compatible = "regulator-fixed";
+               regulator-name = "wifi_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&pio 74 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+               vin-supply = <&reg_vsys>;
+       };
+
+       touch0_fixed_3v3: regulator-5 {
+               compatible = "regulator-fixed";
+               regulator-name = "vio33_tp1";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&pio 119 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&reg_vsys>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&touch_vreg_pins>;
+       };
+
+       usb_hub_fixed_3v3: regulator-6 {
+               compatible = "regulator-fixed";
+               regulator-name = "vhub_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&pio 112 GPIO_ACTIVE_HIGH>; /* HUB_3V3_EN */
+               startup-delay-us = <10000>;
+               enable-active-high;
+               vin-supply = <&reg_vsys>;
+       };
+
+       usb_p0_vbus: regulator-7 {
+               compatible = "regulator-fixed";
+               regulator-name = "vbus_p0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&pio 84 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&reg_vsys>;
+       };
+
+       usb_p1_vbus: regulator-8 {
+               compatible = "regulator-fixed";
+               regulator-name = "vbus_p1";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&pio 87 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&reg_vsys>;
+       };
+
+       /* used by ssusb2 */
+       usb_p2_vbus: regulator-9 {
+               compatible = "regulator-fixed";
+               regulator-name = "vbus_p2";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+       };
+};
+
+&adsp {
+       memory-region = <&adsp_dma_mem>, <&adsp_mem>;
+       status = "okay";
+};
+
+&afe {
+       memory-region = <&afe_dma_mem>;
+       status = "okay";
+};
+
+&gpu {
+       mali-supply = <&mt6359_vproc2_buck_reg>;
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins>;
+       clock-frequency = <400000>;
+       status = "okay";
+
+       touchscreen@5d {
+               compatible = "goodix,gt9271";
+               reg = <0x5d>;
+               interrupt-parent = <&pio>;
+               interrupts-extended = <&pio 6 IRQ_TYPE_EDGE_RISING>;
+               irq-gpios = <&pio 6 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
+               AVDD28-supply = <&touch0_fixed_3v3>;
+               VDDIO-supply = <&mt6359_vio18_ldo_reg>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&touch_pins>;
+       };
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins>;
+       clock-frequency = <400000>;
+       status = "okay";
+
+       typec-mux@48 {
+               compatible = "ite,it5205";
+               reg = <0x48>;
+
+               mode-switch;
+               orientation-switch;
+
+               vcc-supply = <&mt6359_vcn33_1_bt_ldo_reg>;
+
+               port {
+                       it5205_sbu_mux: endpoint {
+                               remote-endpoint = <&typec_sbu_out>;
+                       };
+               };
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins>;
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c3_pins>;
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&i2c4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c4_pins>;
+       clock-frequency = <1000000>;
+       status = "okay";
+
+       rt1715@4e {
+               compatible = "richtek,rt1715";
+               reg = <0x4e>;
+               interrupts-extended = <&pio 12 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tcpci_int_pins>;
+               vbus-supply = <&usb_p1_vbus>;
+
+               connector {
+                       compatible = "usb-c-connector";
+                       label = "USB-C";
+                       data-role = "dual";
+                       op-sink-microwatt = <10000000>;
+                       power-role = "dual";
+                       try-power-role  = "sink";
+                       pd-revision = /bits/ 8 <0x03 0x00 0x01 0x08>;
+
+                       sink-pdos = <PDO_FIXED(5000, 2000,
+                                              PDO_FIXED_DUAL_ROLE |
+                                              PDO_FIXED_DATA_SWAP)>;
+                       source-pdos = <PDO_FIXED(5000, 2000,
+                                                PDO_FIXED_DUAL_ROLE |
+                                                PDO_FIXED_DATA_SWAP)>;
+
+                       altmodes {
+                               displayport {
+                                       svid = /bits/ 16 <0xff01>;
+                                       vdo = <0x001c1c47>;
+                               };
+                       };
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                                       typec_con_hs: endpoint {
+                                               remote-endpoint = <&mtu3_hs1_role_sw>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                                       typec_con_ss: endpoint {
+                                               remote-endpoint = <&xhci_ss_ep>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+                                       typec_sbu_out: endpoint {
+                                               remote-endpoint = <&it5205_sbu_mux>;
+                                       };
+
+                               };
+                       };
+               };
+       };
+};
+
+&i2c5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c5_pins>;
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&i2c6 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c6_pins>;
+       clock-frequency = <400000>;
+       status = "okay";
+};
+
+&mfg0 {
+       domain-supply = <&mt6359_vproc2_buck_reg>;
+};
+
+&mfg1 {
+       domain-supply = <&mt6359_vsram_others_ldo_reg>;
+};
+
+&mmc0 {
+       status = "okay";
+       pinctrl-names = "default", "state_uhs";
+       pinctrl-0 = <&mmc0_default_pins>;
+       pinctrl-1 = <&mmc0_uhs_pins>;
+       bus-width = <8>;
+       max-frequency = <200000000>;
+       cap-mmc-highspeed;
+       mmc-hs200-1_8v;
+       mmc-hs400-1_8v;
+       supports-cqe;
+       cap-mmc-hw-reset;
+       no-sdio;
+       no-sd;
+       hs400-ds-delay = <0x1481b>;
+       vmmc-supply = <&mt6359_vemc_1_ldo_reg>;
+       vqmmc-supply = <&mt6359_vufs_ldo_reg>;
+       non-removable;
+};
+
+&mmc1 {
+       status = "okay";
+       pinctrl-names = "default", "state_uhs";
+       pinctrl-0 = <&mmc1_default_pins>;
+       pinctrl-1 = <&mmc1_uhs_pins>;
+       bus-width = <4>;
+       max-frequency = <200000000>;
+       cap-sd-highspeed;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       no-mmc;
+       no-sdio;
+       cd-gpios = <&pio 2 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&mt6359_vpa_buck_reg>;
+       vqmmc-supply = <&mt6359_vsim1_ldo_reg>;
+};
+
+&mt6359_vbbck_ldo_reg {
+       regulator-always-on;
+};
+
+&mt6359_vcn18_ldo_reg {
+       regulator-name = "vcn18_pmu";
+       regulator-always-on;
+};
+
+&mt6359_vcn33_2_bt_ldo_reg {
+       regulator-name = "vcn33_2_pmu";
+       regulator-always-on;
+};
+
+&mt6359_vcore_buck_reg {
+       regulator-name = "dvdd_proc_l";
+       regulator-always-on;
+};
+
+&mt6359_vgpu11_buck_reg {
+       regulator-name = "dvdd_core";
+       regulator-always-on;
+};
+
+&mt6359_vpa_buck_reg {
+       regulator-name = "vpa_pmu";
+       regulator-max-microvolt = <3100000>;
+};
+
+&mt6359_vproc2_buck_reg {
+       /* The name "vgpu" is required by mtk-regulator-coupler */
+       regulator-name = "vgpu";
+       regulator-min-microvolt = <550000>;
+       regulator-max-microvolt = <800000>;
+       regulator-coupled-with = <&mt6359_vsram_others_ldo_reg>;
+       regulator-coupled-max-spread = <6250>;
+};
+
+&mt6359_vpu_buck_reg {
+       regulator-name = "dvdd_adsp";
+       regulator-always-on;
+};
+
+&mt6359_vrf12_ldo_reg {
+       regulator-name = "va12_abb2_pmu";
+       regulator-always-on;
+};
+
+&mt6359_vsim1_ldo_reg {
+       regulator-name = "vsim1_pmu";
+       regulator-enable-ramp-delay = <480>;
+};
+
+&mt6359_vsram_others_ldo_reg {
+       /* The name "vsram_gpu" is required by mtk-regulator-coupler */
+       regulator-name = "vsram_gpu";
+       regulator-min-microvolt = <750000>;
+       regulator-max-microvolt = <800000>;
+       regulator-coupled-with = <&mt6359_vproc2_buck_reg>;
+       regulator-coupled-max-spread = <6250>;
+};
+
+&mt6359_vufs_ldo_reg {
+       regulator-name = "vufs18_pmu";
+       regulator-always-on;
+};
+
+&mt6359codec {
+       mediatek,mic-type-0 = <1>; /* ACC */
+       mediatek,mic-type-1 = <3>; /* DCC */
+};
+
+&pcie {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie_pins_default>;
+       status = "okay";
+};
+
+&pciephy {
+       status = "okay";
+};
+
+&pio {
+       audio_default_pins: audio-default-pins {
+               pins-cmd-dat {
+                       pinmux = <PINMUX_GPIO101__FUNC_O_AUD_CLK_MOSI>,
+                                <PINMUX_GPIO102__FUNC_O_AUD_SYNC_MOSI>,
+                                <PINMUX_GPIO103__FUNC_O_AUD_DAT_MOSI0>,
+                                <PINMUX_GPIO104__FUNC_O_AUD_DAT_MOSI1>,
+                                <PINMUX_GPIO105__FUNC_I0_AUD_DAT_MISO0>,
+                                <PINMUX_GPIO106__FUNC_I0_AUD_DAT_MISO1>,
+                                <PINMUX_GPIO107__FUNC_B0_I2SIN_MCK>,
+                                <PINMUX_GPIO108__FUNC_B0_I2SIN_BCK>,
+                                <PINMUX_GPIO109__FUNC_B0_I2SIN_WS>,
+                                <PINMUX_GPIO110__FUNC_I0_I2SIN_D0>,
+                                <PINMUX_GPIO114__FUNC_O_I2SO2_MCK>,
+                                <PINMUX_GPIO115__FUNC_B0_I2SO2_BCK>,
+                                <PINMUX_GPIO116__FUNC_B0_I2SO2_WS>,
+                                <PINMUX_GPIO117__FUNC_O_I2SO2_D0>,
+                                <PINMUX_GPIO118__FUNC_O_I2SO2_D1>,
+                                <PINMUX_GPIO121__FUNC_B0_PCM_CLK>,
+                                <PINMUX_GPIO122__FUNC_B0_PCM_SYNC>,
+                                <PINMUX_GPIO124__FUNC_I0_PCM_DI>,
+                                <PINMUX_GPIO125__FUNC_O_DMIC1_CLK>,
+                                <PINMUX_GPIO126__FUNC_I0_DMIC1_DAT>,
+                                <PINMUX_GPIO128__FUNC_O_DMIC2_CLK>,
+                                <PINMUX_GPIO129__FUNC_I0_DMIC2_DAT>;
+               };
+       };
+
+       dptx_pins: dptx-pins {
+               pins-cmd-dat {
+                       pinmux = <PINMUX_GPIO46__FUNC_I0_DP_TX_HPD>;
+                       bias-pull-up;
+               };
+       };
+
+       edp_panel_3v3_en_pins: edp-panel-3v3-en-pins {
+               pins1 {
+                       pinmux = <PINMUX_GPIO15__FUNC_B_GPIO15>;
+                       output-high;
+               };
+       };
+
+       eth_default_pins: eth-default-pins {
+               pins-cc {
+                       pinmux = <PINMUX_GPIO139__FUNC_B0_GBE_TXC>,
+                                <PINMUX_GPIO140__FUNC_I0_GBE_RXC>,
+                                <PINMUX_GPIO141__FUNC_I0_GBE_RXDV>,
+                                <PINMUX_GPIO142__FUNC_O_GBE_TXEN>;
+                       drive-strength = <8>;
+               };
+
+               pins-mdio {
+                       pinmux = <PINMUX_GPIO143__FUNC_O_GBE_MDC>,
+                                <PINMUX_GPIO144__FUNC_B1_GBE_MDIO>;
+                       drive-strength = <8>;
+                       input-enable;
+               };
+
+               pins-power {
+                       pinmux = <PINMUX_GPIO145__FUNC_B_GPIO145>,
+                                <PINMUX_GPIO146__FUNC_B_GPIO146>;
+                       output-high;
+               };
+
+               pins-rxd {
+                       pinmux = <PINMUX_GPIO135__FUNC_I0_GBE_RXD3>,
+                                <PINMUX_GPIO136__FUNC_I0_GBE_RXD2>,
+                                <PINMUX_GPIO137__FUNC_I0_GBE_RXD1>,
+                                <PINMUX_GPIO138__FUNC_I0_GBE_RXD0>;
+                       drive-strength = <8>;
+               };
+
+               pins-txd {
+                       pinmux = <PINMUX_GPIO131__FUNC_O_GBE_TXD3>,
+                                <PINMUX_GPIO132__FUNC_O_GBE_TXD2>,
+                                <PINMUX_GPIO133__FUNC_O_GBE_TXD1>,
+                                <PINMUX_GPIO134__FUNC_O_GBE_TXD0>;
+                       drive-strength = <8>;
+               };
+       };
+
+       eth_sleep_pins: eth-sleep-pins {
+               pins-cc {
+                       pinmux = <PINMUX_GPIO139__FUNC_B_GPIO139>,
+                                <PINMUX_GPIO140__FUNC_B_GPIO140>,
+                                <PINMUX_GPIO141__FUNC_B_GPIO141>,
+                                <PINMUX_GPIO142__FUNC_B_GPIO142>;
+               };
+
+               pins-mdio {
+                       pinmux = <PINMUX_GPIO143__FUNC_B_GPIO143>,
+                                <PINMUX_GPIO144__FUNC_B_GPIO144>;
+                       input-disable;
+                       bias-disable;
+               };
+
+               pins-rxd {
+                       pinmux = <PINMUX_GPIO135__FUNC_B_GPIO135>,
+                                <PINMUX_GPIO136__FUNC_B_GPIO136>,
+                                <PINMUX_GPIO137__FUNC_B_GPIO137>,
+                                <PINMUX_GPIO138__FUNC_B_GPIO138>;
+               };
+
+               pins-txd {
+                       pinmux = <PINMUX_GPIO131__FUNC_B_GPIO131>,
+                                <PINMUX_GPIO132__FUNC_B_GPIO132>,
+                                <PINMUX_GPIO133__FUNC_B_GPIO133>,
+                                <PINMUX_GPIO134__FUNC_B_GPIO134>;
+               };
+       };
+
+       i2c0_pins: i2c0-pins {
+               pins {
+                       pinmux = <PINMUX_GPIO56__FUNC_B1_SDA0>,
+                                <PINMUX_GPIO55__FUNC_B1_SCL0>;
+                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
+                       drive-strength-microamp = <1000>;
+               };
+       };
+
+       i2c1_pins: i2c1-pins {
+               pins {
+                       pinmux = <PINMUX_GPIO58__FUNC_B1_SDA1>,
+                                <PINMUX_GPIO57__FUNC_B1_SCL1>;
+                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
+                       drive-strength-microamp = <1000>;
+               };
+       };
+
+       i2c2_pins: i2c2-pins {
+               pins {
+                       pinmux = <PINMUX_GPIO60__FUNC_B1_SDA2>,
+                                <PINMUX_GPIO59__FUNC_B1_SCL2>;
+                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
+                       drive-strength-microamp = <1000>;
+               };
+       };
+
+       i2c3_pins: i2c3-pins {
+               pins {
+                       pinmux = <PINMUX_GPIO62__FUNC_B1_SDA3>,
+                                <PINMUX_GPIO61__FUNC_B1_SCL3>;
+                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
+                       drive-strength-microamp = <1000>;
+               };
+       };
+
+       i2c4_pins: i2c4-pins {
+               pins {
+                       pinmux = <PINMUX_GPIO64__FUNC_B1_SDA4>,
+                                <PINMUX_GPIO63__FUNC_B1_SCL4>;
+                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
+                       drive-strength-microamp = <1000>;
+               };
+       };
+
+       i2c5_pins: i2c5-pins {
+               pins {
+                       pinmux = <PINMUX_GPIO66__FUNC_B1_SDA5>,
+                                <PINMUX_GPIO65__FUNC_B1_SCL5>;
+                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
+                       drive-strength-microamp = <1000>;
+               };
+       };
+
+       i2c6_pins: i2c6-pins {
+               pins {
+                       pinmux = <PINMUX_GPIO68__FUNC_B1_SDA6>,
+                                <PINMUX_GPIO67__FUNC_B1_SCL6>;
+                       bias-pull-up = <MTK_PULL_SET_RSEL_011>;
+                       drive-strength-microamp = <1000>;
+               };
+       };
+
+       gpio_key_pins: gpio-key-pins {
+               pins {
+                       pinmux = <PINMUX_GPIO42__FUNC_B1_KPCOL0>,
+                                <PINMUX_GPIO43__FUNC_B1_KPCOL1>,
+                                <PINMUX_GPIO44__FUNC_B1_KPROW0>;
+               };
+       };
+
+       mmc0_default_pins: mmc0-default-pins {
+               pins-clk {
+                       pinmux = <PINMUX_GPIO157__FUNC_B1_MSDC0_CLK>;
+                       drive-strength = <6>;
+                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
+               };
+
+               pins-cmd-dat {
+                       pinmux = <PINMUX_GPIO161__FUNC_B1_MSDC0_DAT0>,
+                                <PINMUX_GPIO160__FUNC_B1_MSDC0_DAT1>,
+                                <PINMUX_GPIO159__FUNC_B1_MSDC0_DAT2>,
+                                <PINMUX_GPIO158__FUNC_B1_MSDC0_DAT3>,
+                                <PINMUX_GPIO154__FUNC_B1_MSDC0_DAT4>,
+                                <PINMUX_GPIO153__FUNC_B1_MSDC0_DAT5>,
+                                <PINMUX_GPIO152__FUNC_B1_MSDC0_DAT6>,
+                                <PINMUX_GPIO151__FUNC_B1_MSDC0_DAT7>,
+                                <PINMUX_GPIO156__FUNC_B1_MSDC0_CMD>;
+                       input-enable;
+                       drive-strength = <6>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+               };
+
+               pins-rst {
+                       pinmux = <PINMUX_GPIO155__FUNC_O_MSDC0_RSTB>;
+                       drive-strength = <6>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+               };
+       };
+
+       mmc0_uhs_pins: mmc0-uhs-pins {
+               pins-clk {
+                       pinmux = <PINMUX_GPIO157__FUNC_B1_MSDC0_CLK>;
+                       drive-strength = <8>;
+                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
+               };
+
+               pins-cmd-dat {
+                       pinmux = <PINMUX_GPIO161__FUNC_B1_MSDC0_DAT0>,
+                                <PINMUX_GPIO160__FUNC_B1_MSDC0_DAT1>,
+                                <PINMUX_GPIO159__FUNC_B1_MSDC0_DAT2>,
+                                <PINMUX_GPIO158__FUNC_B1_MSDC0_DAT3>,
+                                <PINMUX_GPIO154__FUNC_B1_MSDC0_DAT4>,
+                                <PINMUX_GPIO153__FUNC_B1_MSDC0_DAT5>,
+                                <PINMUX_GPIO152__FUNC_B1_MSDC0_DAT6>,
+                                <PINMUX_GPIO151__FUNC_B1_MSDC0_DAT7>,
+                                <PINMUX_GPIO156__FUNC_B1_MSDC0_CMD>;
+                       input-enable;
+                       drive-strength = <8>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+               };
+
+               pins-ds {
+                       pinmux = <PINMUX_GPIO162__FUNC_B0_MSDC0_DSL>;
+                       drive-strength = <8>;
+                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
+               };
+
+               pins-rst {
+                       pinmux = <PINMUX_GPIO155__FUNC_O_MSDC0_RSTB>;
+                       drive-strength = <8>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+               };
+       };
+
+       mmc1_default_pins: mmc1-default-pins {
+               pins-clk {
+                       pinmux = <PINMUX_GPIO164__FUNC_B1_MSDC1_CLK>;
+                       drive-strength = <6>;
+                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
+               };
+
+               pins-cmd-dat {
+                       pinmux = <PINMUX_GPIO163__FUNC_B1_MSDC1_CMD>,
+                                <PINMUX_GPIO165__FUNC_B1_MSDC1_DAT0>,
+                                <PINMUX_GPIO166__FUNC_B1_MSDC1_DAT1>,
+                                <PINMUX_GPIO167__FUNC_B1_MSDC1_DAT2>,
+                                <PINMUX_GPIO168__FUNC_B1_MSDC1_DAT3>;
+                       input-enable;
+                       drive-strength = <6>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+               };
+
+               pins-insert {
+                       pinmux = <PINMUX_GPIO2__FUNC_B_GPIO2>;
+                       bias-pull-up;
+               };
+       };
+
+       mmc1_uhs_pins: mmc1-uhs-pins {
+               pins-clk {
+                       pinmux = <PINMUX_GPIO164__FUNC_B1_MSDC1_CLK>;
+                       drive-strength = <6>;
+                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
+               };
+
+               pins-cmd-dat {
+                       pinmux = <PINMUX_GPIO163__FUNC_B1_MSDC1_CMD>,
+                                <PINMUX_GPIO165__FUNC_B1_MSDC1_DAT0>,
+                                <PINMUX_GPIO166__FUNC_B1_MSDC1_DAT1>,
+                                <PINMUX_GPIO167__FUNC_B1_MSDC1_DAT2>,
+                                <PINMUX_GPIO168__FUNC_B1_MSDC1_DAT3>;
+                       input-enable;
+                       drive-strength = <6>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+               };
+       };
+
+       mmc2_default_pins: mmc2-default-pins {
+               pins-clk {
+                       pinmux = <PINMUX_GPIO170__FUNC_B1_MSDC2_CLK>;
+                       drive-strength = <4>;
+                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
+               };
+
+               pins-cmd-dat {
+                       pinmux = <PINMUX_GPIO169__FUNC_B1_MSDC2_CMD>,
+                                <PINMUX_GPIO171__FUNC_B1_MSDC2_DAT0>,
+                                <PINMUX_GPIO172__FUNC_B1_MSDC2_DAT1>,
+                                <PINMUX_GPIO173__FUNC_B1_MSDC2_DAT2>,
+                                <PINMUX_GPIO174__FUNC_B1_MSDC2_DAT3>;
+                       input-enable;
+                       drive-strength = <6>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+               };
+
+               pins-pcm {
+                       pinmux = <PINMUX_GPIO123__FUNC_O_PCM_DO>;
+               };
+       };
+
+       mmc2_uhs_pins: mmc2-uhs-pins {
+               pins-clk {
+                       pinmux = <PINMUX_GPIO170__FUNC_B1_MSDC2_CLK>;
+                       drive-strength = <4>;
+                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
+               };
+
+               pins-cmd-dat {
+                       pinmux = <PINMUX_GPIO169__FUNC_B1_MSDC2_CMD>,
+                                <PINMUX_GPIO171__FUNC_B1_MSDC2_DAT0>,
+                                <PINMUX_GPIO172__FUNC_B1_MSDC2_DAT1>,
+                                <PINMUX_GPIO173__FUNC_B1_MSDC2_DAT2>,
+                                <PINMUX_GPIO174__FUNC_B1_MSDC2_DAT3>;
+                       input-enable;
+                       drive-strength = <6>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+               };
+       };
+
+       mmc2_eint_pins: mmc2-eint-pins {
+               pins-dat1 {
+                       pinmux = <PINMUX_GPIO172__FUNC_B_GPIO172>;
+                       input-enable;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+               };
+       };
+
+       mmc2_dat1_pins: mmc2-dat1-pins {
+               pins-dat1 {
+                       pinmux = <PINMUX_GPIO172__FUNC_B1_MSDC2_DAT1>;
+                       input-enable;
+                       drive-strength = <6>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+               };
+       };
+
+       panel_default_pins: panel-default-pins {
+               pins-dcdc {
+                       pinmux = <PINMUX_GPIO45__FUNC_B_GPIO45>;
+                       output-low;
+               };
+
+               pins-en {
+                       pinmux = <PINMUX_GPIO111__FUNC_B_GPIO111>;
+                       output-low;
+               };
+
+               pins-rst {
+                       pinmux = <PINMUX_GPIO25__FUNC_B_GPIO25>;
+                       output-high;
+               };
+       };
+
+       pcie_pins_default: pcie-default {
+               mux {
+                       pinmux = <PINMUX_GPIO47__FUNC_I1_WAKEN>,
+                                <PINMUX_GPIO48__FUNC_O_PERSTN>,
+                                <PINMUX_GPIO49__FUNC_B1_CLKREQN>;
+                       bias-pull-up;
+               };
+       };
+
+       rt1715_int_pins: rt1715-int-pins {
+               pins_cmd0_dat {
+                       pinmux = <PINMUX_GPIO12__FUNC_B_GPIO12>;
+                       bias-pull-up;
+                       input-enable;
+               };
+       };
+
+       spi0_pins: spi0-pins {
+               pins-spi {
+                       pinmux = <PINMUX_GPIO69__FUNC_O_SPIM0_CSB>,
+                               <PINMUX_GPIO70__FUNC_O_SPIM0_CLK>,
+                               <PINMUX_GPIO71__FUNC_B0_SPIM0_MOSI>,
+                               <PINMUX_GPIO72__FUNC_B0_SPIM0_MISO>;
+                       bias-disable;
+               };
+       };
+
+       spi1_pins: spi1-pins {
+               pins-spi {
+                       pinmux = <PINMUX_GPIO75__FUNC_O_SPIM1_CSB>,
+                               <PINMUX_GPIO76__FUNC_O_SPIM1_CLK>,
+                               <PINMUX_GPIO77__FUNC_B0_SPIM1_MOSI>,
+                               <PINMUX_GPIO78__FUNC_B0_SPIM1_MISO>;
+                       bias-disable;
+               };
+       };
+
+       spi2_pins: spi2-pins {
+               pins-spi {
+                       pinmux = <PINMUX_GPIO79__FUNC_O_SPIM2_CSB>,
+                               <PINMUX_GPIO80__FUNC_O_SPIM2_CLK>,
+                               <PINMUX_GPIO81__FUNC_B0_SPIM2_MOSI>,
+                               <PINMUX_GPIO82__FUNC_B0_SPIM2_MISO>;
+                       bias-disable;
+               };
+       };
+
+       touch_vreg_pins: touch-avdd-pins {
+               pins-power {
+                       pinmux = <PINMUX_GPIO120__FUNC_B_GPIO120>;
+                       output-high;
+               };
+       };
+
+       touch_pins: touch-pins {
+               pins-irq {
+                       pinmux = <PINMUX_GPIO6__FUNC_B_GPIO6>;
+                       input-enable;
+                       bias-disable;
+               };
+
+               pins-reset {
+                       pinmux = <PINMUX_GPIO5__FUNC_B_GPIO5>;
+                       output-high;
+               };
+       };
+
+       tcpci_int_pins: tcpci-int-pins {
+               pins-int-n {
+                       pinmux = <PINMUX_GPIO12__FUNC_B_GPIO12>;
+                       bias-pull-up;
+                       input-enable;
+               };
+       };
+
+       uart0_pins: uart0-pins {
+               pins {
+                       pinmux = <PINMUX_GPIO31__FUNC_O_UTXD0>,
+                                <PINMUX_GPIO32__FUNC_I1_URXD0>;
+                       bias-pull-up;
+               };
+       };
+
+       uart1_pins: uart1-pins {
+               pins {
+                       pinmux = <PINMUX_GPIO33__FUNC_O_UTXD1>,
+                                <PINMUX_GPIO34__FUNC_I1_URXD1>;
+                       bias-pull-up;
+               };
+       };
+
+       uart2_pins: uart2-pins {
+               pins {
+                       pinmux = <PINMUX_GPIO35__FUNC_O_UTXD2>,
+                                <PINMUX_GPIO36__FUNC_I1_URXD2>;
+                       bias-pull-up;
+               };
+       };
+
+       usb_default_pins: usb-default-pins {
+               pins-iddig {
+                       pinmux = <PINMUX_GPIO83__FUNC_B_GPIO83>;
+                       input-enable;
+                       bias-pull-up;
+               };
+
+               pins-valid {
+                       pinmux = <PINMUX_GPIO85__FUNC_I0_VBUSVALID>;
+                       input-enable;
+               };
+
+               pins-vbus {
+                       pinmux = <PINMUX_GPIO84__FUNC_O_USB_DRVVBUS>;
+                       output-high;
+               };
+
+       };
+
+       usb1_default_pins: usb1-default-pins {
+               pins-valid {
+                       pinmux = <PINMUX_GPIO88__FUNC_I0_VBUSVALID_1P>;
+                       input-enable;
+               };
+
+               pins-usb-hub-3v3-en {
+                       pinmux = <PINMUX_GPIO112__FUNC_B_GPIO112>;
+                       output-high;
+               };
+       };
+
+       usb2_default_pins: usb2-default-pins {
+               pins-iddig {
+                       pinmux = <PINMUX_GPIO89__FUNC_B_GPIO89>;
+                       input-enable;
+                       bias-pull-up;
+               };
+       };
+
+       wifi_pwrseq_pins: wifi-pwrseq-pins {
+               pins-wifi-enable {
+                       pinmux = <PINMUX_GPIO127__FUNC_B_GPIO127>;
+                       output-low;
+               };
+       };
+};
+
+&eth {
+       phy-mode ="rgmii-id";
+       phy-handle = <&ethernet_phy0>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&eth_default_pins>;
+       pinctrl-1 = <&eth_sleep_pins>;
+       mediatek,mac-wol;
+       snps,reset-gpio = <&pio 147 GPIO_ACTIVE_HIGH>;
+       snps,reset-delays-us = <0 10000 10000>;
+       status = "okay";
+};
+
+&eth_mdio {
+       ethernet_phy0: ethernet-phy@1 {
+               compatible = "ethernet-phy-id001c.c916";
+               reg = <0x1>;
+       };
+};
+
+&pmic {
+       interrupt-parent = <&pio>;
+       interrupts = <222 IRQ_TYPE_LEVEL_HIGH>;
+
+       mt6359keys: keys {
+               compatible = "mediatek,mt6359-keys";
+               mediatek,long-press-mode = <1>;
+               power-off-time-sec = <0>;
+
+               power-key {
+                       linux,keycodes = <KEY_POWER>;
+                       wakeup-source;
+               };
+       };
+};
+
+&scp {
+       memory-region = <&scp_mem>;
+       status = "okay";
+};
+
+&sound {
+       compatible = "mediatek,mt8390-mt6359-evk", "mediatek,mt8188-mt6359-evb";
+       model = "mt8390-evk";
+       pinctrl-names = "default";
+       pinctrl-0 = <&audio_default_pins>;
+       audio-routing =
+               "Headphone", "Headphone L",
+               "Headphone", "Headphone R",
+               "DMIC_INPUT", "AP DMIC",
+               "AP DMIC", "AUDGLB",
+               "AP DMIC", "MIC_BIAS_0",
+               "AP DMIC", "MIC_BIAS_2";
+       mediatek,adsp = <&adsp>;
+       status = "okay";
+
+       dai-link-0 {
+               link-name = "DL_SRC_BE";
+
+               codec {
+                       sound-dai = <&pmic 0>;
+               };
+       };
+
+       dai-link-1 {
+               link-name = "DMIC_BE";
+
+               codec {
+                       sound-dai = <&dmic_codec>;
+               };
+       };
+};
+
+&spi2 {
+       pinctrl-0 = <&spi2_pins>;
+       pinctrl-names = "default";
+       mediatek,pad-select = <0>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-0 = <&uart0_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-0 = <&uart1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-0 = <&uart2_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&u3phy0 {
+       status = "okay";
+};
+
+&u3phy1 {
+       status = "okay";
+};
+
+&u3phy2 {
+       status = "okay";
+};
+
+&ssusb0 {
+       dr_mode = "otg";
+       maximum-speed = "high-speed";
+       usb-role-switch;
+       wakeup-source;
+       vusb33-supply = <&mt6359_vusb_ldo_reg>;
+       pinctrl-0 = <&usb_default_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       connector {
+               compatible = "gpio-usb-b-connector", "usb-b-connector";
+               type = "micro";
+               id-gpios = <&pio 83 GPIO_ACTIVE_HIGH>;
+               vbus-supply = <&usb_p0_vbus>;
+       };
+};
+
+&xhci0 {
+       status = "okay";
+};
+
+&ssusb1 {
+       dr_mode = "otg";
+       usb-role-switch;
+       wakeup-source;
+       vusb33-supply = <&mt6359_vusb_ldo_reg>;
+       pinctrl-0 = <&usb1_default_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       port {
+               mtu3_hs1_role_sw: endpoint {
+                       remote-endpoint = <&typec_con_hs>;
+               };
+       };
+};
+
+&xhci1 {
+       status = "okay";
+       vusb33-supply = <&mt6359_vusb_ldo_reg>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       hub_2_0: hub@1 {
+               compatible = "usb451,8025";
+               reg = <1>;
+               peer-hub = <&hub_3_0>;
+               reset-gpios = <&pio 7 GPIO_ACTIVE_HIGH>;
+               vdd-supply = <&usb_hub_fixed_3v3>;
+       };
+
+       hub_3_0: hub@2 {
+               compatible = "usb451,8027";
+               reg = <2>;
+               peer-hub = <&hub_2_0>;
+               reset-gpios = <&pio 7 GPIO_ACTIVE_HIGH>;
+               vdd-supply = <&usb_hub_fixed_3v3>;
+       };
+
+       port {
+               xhci_ss_ep: endpoint {
+                       remote-endpoint = <&typec_con_ss>;
+               };
+       };
+};
+
+&ssusb2 {
+       dr_mode = "otg";
+       maximum-speed = "high-speed";
+       usb-role-switch;
+       vusb33-supply = <&mt6359_vusb_ldo_reg>;
+       wakeup-source;
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb2_default_pins>;
+       status = "okay";
+
+       connector {
+               compatible = "gpio-usb-b-connector", "usb-b-connector";
+               type = "micro";
+               id-gpios = <&pio 89 GPIO_ACTIVE_HIGH>;
+               vbus-supply = <&usb_p2_vbus>;
+       };
+};
+
+&xhci2 {
+       vusb33-supply = <&mt6359_vusb_ldo_reg>;
+       vbus-supply = <&sdio_fixed_3v3>; /* wifi_3v3 */
+       status = "okay";
+};
index 5950194..f02c32d 100644 (file)
        pinctrl-0 = <&i2c2_pins>;
        pinctrl-names = "default";
        status = "okay";
+
+       typec-mux@48 {
+               compatible = "ite,it5205";
+               reg = <0x48>;
+               vcc-supply = <&mt6359_vibr_ldo_reg>;
+               mode-switch;
+               orientation-switch;
+               status = "okay";
+
+               port {
+                       it5205_sbu_ep: endpoint {
+                               remote-endpoint = <&mt6360_ssusb_sbu_ep>;
+                       };
+               };
+       };
 };
 
 &i2c6 {
                                regulator-always-on;
                        };
                };
+
+               tcpc {
+                       compatible = "mediatek,mt6360-tcpc";
+                       interrupts-extended = <&pio 17 IRQ_TYPE_LEVEL_LOW>;
+                       interrupt-names = "PD_IRQB";
+
+                       connector {
+                               compatible = "usb-c-connector";
+                               label = "USB-C";
+                               data-role = "dual";
+                               op-sink-microwatt = <10000000>;
+                               power-role = "dual";
+                               try-power-role = "sink";
+
+                               source-pdos = <PDO_FIXED(5000, 1000,
+                                                        PDO_FIXED_DUAL_ROLE |
+                                                        PDO_FIXED_DATA_SWAP)>;
+                               sink-pdos = <PDO_FIXED(5000, 2000,
+                                                      PDO_FIXED_DUAL_ROLE |
+                                                      PDO_FIXED_DATA_SWAP)>;
+
+                               pd-revision = /bits/ 8 <0x03 0x01 0x01 0x06>;
+
+                               altmodes {
+                                       displayport {
+                                               svid = /bits/ 16 <0xff01>;
+                                               vdo = <0x00001c46>;
+                                       };
+                               };
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+                                               typec_con_hs: endpoint {
+                                                       remote-endpoint = <&mtu3_hs0_role_sw>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+                                               typec_con_ss: endpoint {
+                                                       remote-endpoint = <&mtu3_ss0_role_sw>;
+                                               };
+                                       };
+
+                                       port@2 {
+                                               reg = <2>;
+                                               mt6360_ssusb_sbu_ep: endpoint {
+                                                       remote-endpoint = <&it5205_sbu_ep>;
+                                               };
+                                       };
+                               };
+                       };
+               };
        };
 };
 
                };
        };
 
+       u3_p0_vbus: u3-p0-vbus-default-pins {
+               pins-vbus {
+                       pinmux = <PINMUX_GPIO63__FUNC_VBUSVALID>;
+                       input-enable;
+               };
+       };
+
        uart0_pins: uart0-pins {
                pins {
                        pinmux = <PINMUX_GPIO98__FUNC_UTXD0>,
 };
 
 &ssusb0 {
+       dr_mode = "otg";
+       pinctrl-names = "default";
+       pinctrl-0 = <&u3_p0_vbus>;
+       usb-role-switch;
        vusb33-supply = <&mt6359_vusb_ldo_reg>;
        status = "okay";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+                       mtu3_hs0_role_sw: endpoint {
+                               remote-endpoint = <&typec_con_hs>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+                       mtu3_ss0_role_sw: endpoint {
+                               remote-endpoint = <&typec_con_ss>;
+                       };
+               };
+       };
 };
 
 &ssusb2 {
diff --git a/src/arm64/mediatek/mt8395-radxa-nio-12l-8-hd-panel.dtso b/src/arm64/mediatek/mt8395-radxa-nio-12l-8-hd-panel.dtso
new file mode 100644 (file)
index 0000000..0389c9c
--- /dev/null
@@ -0,0 +1,84 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Radxa Display 8 HD touchscreen module
+ * Copyright (C) 2025 Collabora Ltd.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+&backlight {
+       status = "okay";
+};
+
+&disp_pwm0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm0_default_pins>;
+       status = "okay";
+};
+
+&dsi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       panel@0 {
+               compatible = "radxa,display-8hd-ad002", "jadard,jd9365da-h3";
+               reg = <0>;
+               backlight = <&backlight>;
+               vdd-supply = <&mt6359_vcn33_2_bt_ldo_reg>;
+               vccio-supply = <&mt6360_ldo2>;
+               reset-gpios = <&pio 108 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&panel_default_pins>;
+
+               port {
+                       dsi_panel_in: endpoint {
+                               remote-endpoint = <&dsi0_out>;
+                       };
+               };
+       };
+};
+
+&dsi0_out {
+       remote-endpoint = <&dsi_panel_in>;
+};
+
+&i2c4 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       touchscreen@14 {
+               compatible = "goodix,gt911";
+               reg = <0x14>;
+               interrupts-extended = <&pio 132 IRQ_TYPE_EDGE_RISING>;
+               irq-gpios = <&pio 132 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&pio 133 GPIO_ACTIVE_HIGH>;
+               VDDIO-supply = <&mt6359_vcn33_2_bt_ldo_reg>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&touch_pins>;
+       };
+};
+
+&mipi_tx0 {
+       status = "okay";
+};
+
+&ovl0_in {
+       remote-endpoint = <&vdosys0_ep_main>;
+};
+
+&vdosys0 {
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vdosys0_ep_main: endpoint@0 {
+                       reg = <0>;
+                       remote-endpoint = <&ovl0_in>;
+               };
+       };
+};
index 41dc348..1c922e9 100644 (file)
                reg = <0 0x40000000 0x1 0x0>;
        };
 
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               brightness-levels = <0 1023>;
+               default-brightness-level = <576>;
+               enable-gpios = <&pio 107 GPIO_ACTIVE_HIGH>;
+               num-interpolated-steps = <1023>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&dsi0_backlight_pins>;
+               pwms = <&disp_pwm0 0 500000>;
+               status = "disabled";
+       };
+
        wifi_vreg: regulator-wifi-3v3-en {
                compatible = "regulator-fixed";
                regulator-name = "wifi_3v3_en";
        cpu-supply = <&mt6315_6_vbuck1>;
 };
 
+&dither0_out {
+       remote-endpoint = <&dsi0_in>;
+};
+
+&dsi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       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 { };
+               };
+       };
+};
+
 &eth {
        phy-mode = "rgmii-rxid";
        phy-handle = <&rgmii_phy>;
 &pio {
        mediatek,rsel-resistance-in-si-unit;
 
+       dsi0_backlight_pins: dsi0-backlight-pins {
+               pins-backlight-en {
+                       pinmux = <PINMUX_GPIO107__FUNC_GPIO107>;
+                       output-high;
+               };
+       };
+
        eth_default_pins: eth-default-pins {
                pins-cc {
                        pinmux = <PINMUX_GPIO85__FUNC_GBE_TXC>,
                };
        };
 
+       panel_default_pins: panel-pins {
+               pins-rst {
+                       pinmux = <PINMUX_GPIO108__FUNC_GPIO108>;
+                       bias-pull-up;
+               };
+       };
+
        pcie0_default_pins: pcie0-default-pins {
                pins-bus {
                        pinmux = <PINMUX_GPIO19__FUNC_WAKEN>,
                };
        };
 
+       pwm0_default_pins: pwm0-pins {
+               pins-disp-pwm {
+                       pinmux = <PINMUX_GPIO97__FUNC_DISP_PWM0>;
+               };
+       };
+
        spi1_pins: spi1-default-pins {
                pins-bus {
                        pinmux = <PINMUX_GPIO136__FUNC_SPIM1_CSB>,
                };
        };
 
+       touch_pins: touch-pins {
+               pins-touch-int {
+                       pinmux = <PINMUX_GPIO132__FUNC_GPIO132>;
+                       input-enable;
+                       bias-disable;
+               };
+
+               pins-touch-rst {
+                       pinmux = <PINMUX_GPIO133__FUNC_GPIO133>;
+                       output-high;
+               };
+       };
+
        uart0_pins: uart0-pins {
                pins-bus {
                        pinmux = <PINMUX_GPIO98__FUNC_UTXD0>,
index 1c53ccc..9b9d1d1 100644 (file)
                };
        };
 
+       i2c@7000c000 {
+               status = "okay";
+
+               tmp451: temperature-sensor@4c {
+                       compatible = "ti,tmp451";
+                       reg = <0x4c>;
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(X, 4) IRQ_TYPE_LEVEL_LOW>;
+                       vcc-supply = <&vdd_1v8>;
+                       #thermal-sensor-cells = <1>;
+               };
+       };
+
        i2c@7000c400 {
                status = "okay";
 
index 63b94a0..83ed6ac 100644 (file)
 
                        #gpio-cells = <2>;
                        gpio-controller;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(L, 1) IRQ_TYPE_EDGE_FALLING>;
+
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&gpio_1v8>;
                };
 
                exp2: gpio@77 {
 
                        #gpio-cells = <2>;
                        gpio-controller;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(Z, 2) IRQ_TYPE_EDGE_FALLING>;
+
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&gpio_1v8>;
                };
        };
 
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <1800000>;
                regulator-always-on;
-               gpio = <&exp1 14 GPIO_ACTIVE_HIGH>;
+               gpio = <&exp1 9 GPIO_ACTIVE_HIGH>;
                enable-active-high;
                vin-supply = <&vdd_1v8>;
        };
index c56824d..0ecdd72 100644 (file)
                                        regulator-max-microvolt = <1170000>;
                                        regulator-enable-ramp-delay = <146>;
                                        regulator-ramp-delay = <27500>;
-                                       regulator-ramp-delay-scale = <300>;
                                        regulator-always-on;
                                        regulator-boot-on;
 
                                        regulator-max-microvolt = <1150000>;
                                        regulator-enable-ramp-delay = <176>;
                                        regulator-ramp-delay = <27500>;
-                                       regulator-ramp-delay-scale = <300>;
                                        regulator-always-on;
                                        regulator-boot-on;
 
                                        regulator-max-microvolt = <1350000>;
                                        regulator-enable-ramp-delay = <176>;
                                        regulator-ramp-delay = <27500>;
-                                       regulator-ramp-delay-scale = <350>;
                                        regulator-always-on;
                                        regulator-boot-on;
 
                                        regulator-max-microvolt = <1800000>;
                                        regulator-enable-ramp-delay = <242>;
                                        regulator-ramp-delay = <27500>;
-                                       regulator-ramp-delay-scale = <360>;
                                        regulator-always-on;
                                        regulator-boot-on;
 
                                        regulator-max-microvolt = <1200000>;
                                        regulator-enable-ramp-delay = <26>;
                                        regulator-ramp-delay = <100000>;
-                                       regulator-ramp-delay-scale = <200>;
                                        regulator-always-on;
                                        regulator-boot-on;
 
                                        regulator-max-microvolt = <1050000>;
                                        regulator-enable-ramp-delay = <22>;
                                        regulator-ramp-delay = <100000>;
-                                       regulator-ramp-delay-scale = <200>;
 
                                        maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>;
                                        maxim,active-fps-power-up-slot = <0>;
                                        regulator-max-microvolt = <3300000>;
                                        regulator-enable-ramp-delay = <62>;
                                        regulator-ramp-delay = <100000>;
-                                       regulator-ramp-delay-scale = <200>;
 
                                        maxim,active-fps-source = <MAX77620_FPS_SRC_NONE>;
                                        maxim,active-fps-power-up-slot = <0>;
                                        regulator-max-microvolt = <1100000>;
                                        regulator-enable-ramp-delay = <22>;
                                        regulator-ramp-delay = <100000>;
-                                       regulator-ramp-delay-scale = <200>;
                                        regulator-disable-active-discharge;
                                        regulator-always-on;
                                        regulator-boot-on;
                                        regulator-max-microvolt = <1050000>;
                                        regulator-enable-ramp-delay = <24>;
                                        regulator-ramp-delay = <100000>;
-                                       regulator-ramp-delay-scale = <200>;
 
                                        maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
                                        maxim,active-fps-power-up-slot = <3>;
                                        regulator-max-microvolt = <1050000>;
                                        regulator-enable-ramp-delay = <22>;
                                        regulator-ramp-delay = <100000>;
-                                       regulator-ramp-delay-scale = <200>;
 
                                        maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
                                        maxim,active-fps-power-up-slot = <6>;
index 942e3a0..b6c84d1 100644 (file)
                                pins = "sdmmc3";
                                power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
                        };
+
+                       gpio_1v8: gpio-1v8 {
+                               pins = "gpio";
+                               power-source = <TEGRA_IO_PAD_VOLTAGE_1V8>;
+                       };
+
+                       gpio_3v3: gpio-3v3 {
+                               pins = "gpio";
+                               power-source = <TEGRA_IO_PAD_VOLTAGE_3V3>;
+                       };
                };
 
                powergates {
index 36e8880..9ce55b4 100644 (file)
                };
 
                pcie@141a0000 {
+                       reg = <0x00 0x141a0000 0x0 0x00020000   /* appl registers (128K)      */
+                              0x00 0x3a000000 0x0 0x00040000   /* configuration space (256K) */
+                              0x00 0x3a040000 0x0 0x00040000   /* iATU_DMA reg space (256K)  */
+                              0x00 0x3a080000 0x0 0x00040000   /* DBI reg space (256K)       */
+                              0x2e 0x20000000 0x0 0x10000000>; /* ECAM (256MB)               */
+
+                       ranges = <0x81000000 0x00 0x3a100000 0x00 0x3a100000 0x0 0x00100000      /* downstream I/O (1MB) */
+                                 0x82000000 0x00 0x40000000 0x2e 0x30000000 0x0 0x08000000      /* non-prefetchable memory (128MB) */
+                                 0xc3000000 0x28 0x00000000 0x28 0x00000000 0x6 0x20000000>;    /* prefetchable memory (25088MB) */
+
                        status = "okay";
                        vddio-pex-ctl-supply = <&vdd_1v8_ls>;
                        phys = <&p2u_nvhs_0>, <&p2u_nvhs_1>, <&p2u_nvhs_2>,
index 19340d1..4182135 100644 (file)
                        wakeup-event-action = <EV_ACT_ASSERTED>;
                        wakeup-source;
                };
-
-               key-suspend {
-                       label = "Suspend";
-                       gpios = <&gpio TEGRA234_MAIN_GPIO(G, 2) GPIO_ACTIVE_LOW>;
-                       linux,input-type = <EV_KEY>;
-                       linux,code = <KEY_SLEEP>;
-               };
        };
 
        fan: pwm-fan {
index 09b95f8..1667c71 100644 (file)
@@ -28,6 +28,7 @@
 
        aliases {
                i2c4 = &i2c4;
+               i2c15 = &i2c15;
                serial1 = &uart2;
        };
 
                };
        };
 
+       usb0-sbu-mux {
+               compatible = "pericom,pi3usb102", "gpio-sbu-mux";
+
+               select-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&usb0_sbu_default>;
+               pinctrl-names = "default";
+
+               orientation-switch;
+
+               port {
+                       usb0_sbu_mux: endpoint {
+                               remote-endpoint = <&ucsi0_sbu>;
+                       };
+               };
+       };
+
+       usb1-sbu-mux {
+               compatible = "pericom,pi3usb102", "gpio-sbu-mux";
+
+               select-gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&usb1_sbu_default>;
+               pinctrl-names = "default";
+
+               orientation-switch;
+
+               port {
+                       usb1_sbu_mux: endpoint {
+                               remote-endpoint = <&ucsi1_sbu>;
+                       };
+               };
+       };
+
        wcn6855-pmu {
                compatible = "qcom,wcn6855-pmu";
 
 
 };
 
+&i2c15 {
+       clock-frequency = <400000>;
+
+       pinctrl-0 = <&i2c15_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+
+       embedded-controller@38 {
+               compatible = "huawei,gaokun3-ec";
+               reg = <0x38>;
+
+               interrupts-extended = <&tlmm 107 IRQ_TYPE_LEVEL_LOW>;
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               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>;
+
+                                       ucsi0_hs_in: endpoint {
+                                               remote-endpoint = <&usb_0_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       ucsi0_ss_in: endpoint {
+                                               remote-endpoint = <&usb_0_qmpphy_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       ucsi0_sbu: endpoint {
+                                               remote-endpoint = <&usb0_sbu_mux>;
+                                       };
+                               };
+                       };
+               };
+
+               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>;
+
+                                       ucsi1_hs_in: endpoint {
+                                               remote-endpoint = <&usb_1_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       ucsi1_ss_in: endpoint {
+                                               remote-endpoint = <&usb_1_qmpphy_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       ucsi1_sbu: endpoint {
+                                               remote-endpoint = <&usb1_sbu_mux>;
+                                       };
+                               };
+                       };
+               };
+       };
+};
+
 &mdss0 {
        status = "okay";
 };
        dr_mode = "host";
 };
 
+&usb_0_dwc3_hs {
+       remote-endpoint = <&ucsi0_hs_in>;
+};
+
 &usb_0_hsphy {
        vdda-pll-supply = <&vreg_l9d>;
        vdda18-supply = <&vreg_l1c>;
        remote-endpoint = <&mdss0_dp0_out>;
 };
 
+&usb_0_qmpphy_out {
+       remote-endpoint = <&ucsi0_ss_in>;
+};
+
 &usb_1 {
        status = "okay";
 };
        dr_mode = "host";
 };
 
+&usb_1_dwc3_hs {
+       remote-endpoint = <&ucsi1_hs_in>;
+};
+
 &usb_1_hsphy {
        vdda-pll-supply = <&vreg_l4b>;
        vdda18-supply = <&vreg_l1c>;
        remote-endpoint = <&mdss0_dp1_out>;
 };
 
+&usb_1_qmpphy_out {
+       remote-endpoint = <&ucsi1_ss_in>;
+};
+
 &usb_2 {
        status = "okay";
 };
                bias-disable;
        };
 
+       i2c15_default: i2c15-default-state {
+               pins = "gpio36", "gpio37";
+               function = "qup15";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
        mode_pin_active: mode-pin-state {
                pins = "gpio26";
                function = "gpio";
                };
        };
 
+       usb0_sbu_default: usb0-sbu-state {
+               pins = "gpio164";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       usb1_sbu_default: usb1-sbu-state {
+               pins = "gpio47";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+       };
+
        wcd_default: wcd-default-state {
                reset-pins {
                        pins = "gpio106";
index 43f88c1..1489bc8 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
        status = "okay";
 };
 
index 375a56b..a105841 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>, <&scif_clk_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 05712cd..380b857 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index ab82836..4f38b01 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 659ae1f..4e78139 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index f065ee9..c8b87ae 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a774a1";
                        reg = <0 0xe6060000 0 0x50c>;
+                       bootph-all;
                };
 
                cmt0: timer@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a774a1-rst";
                        reg = <0 0xe6160000 0 0x018c>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index 117cb69..f2fc2a2 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a774b1";
                        reg = <0 0xe6060000 0 0x50c>;
+                       bootph-all;
                };
 
                cmt0: timer@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a774b1-rst";
                        reg = <0 0xe6160000 0 0x0200>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index b78dbd8..57a281f 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 7655d5e..530ffd2 100644 (file)
        cluster1_opp: opp-table-1 {
                compatible = "operating-points-v2";
                opp-shared;
+
                opp-800000000 {
                        opp-hz = /bits/ 64 <800000000>;
+                       opp-microvolt = <1030000>;
                        clock-latency-ns = <300000>;
                };
                opp-1000000000 {
                        opp-hz = /bits/ 64 <1000000000>;
+                       opp-microvolt = <1030000>;
                        clock-latency-ns = <300000>;
                };
                opp-1200000000 {
                        opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <1030000>;
                        clock-latency-ns = <300000>;
                        opp-suspend;
                };
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc: soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a774c0";
                        reg = <0 0xe6060000 0 0x508>;
+                       bootph-all;
                };
 
                cmt0: timer@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a774c0-rst";
                        reg = <0 0xe6160000 0 0x0200>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index f845ca6..e4dbda8 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a774e1";
                        reg = <0 0xe6060000 0 0x50c>;
+                       bootph-all;
                };
 
                cmt0: timer@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a774e1-rst";
                        reg = <0 0xe6160000 0 0x0200>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index 96f3b5f..6ee9cde 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc: soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
 
                #address-cells = <2>;
                #size-cells = <2>;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a7795";
                        reg = <0 0xe6060000 0 0x50c>;
+                       bootph-all;
                };
 
                cmt0: timer@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a7795-rst";
                        reg = <0 0xe6160000 0 0x0200>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index ee80f52..a323ac4 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a7796";
                        reg = <0 0xe6060000 0 0x50c>;
+                       bootph-all;
                };
 
                cmt0: timer@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a7796-rst";
                        reg = <0 0xe6160000 0 0x0200>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index 3b90660..49f6d31 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a77961";
                        reg = <0 0xe6060000 0 0x50c>;
+                       bootph-all;
                };
 
                cmt0: timer@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a77961-rst";
                        reg = <0 0xe6160000 0 0x0200>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index 557bdf8..136a22c 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a77965";
                        reg = <0 0xe6060000 0 0x50c>;
+                       bootph-all;
                };
 
                cmt0: timer@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a77965-rst";
                        reg = <0 0xe6160000 0 0x0200>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index 9450d8a..0c00566 100644 (file)
@@ -70,7 +70,7 @@
                gpio-controller;
                #gpio-cells = <2>;
 
-               vin0_adv7612_en {
+               vin0-adv7612-en-hog {
                        gpio-hog;
                        gpios = <3 GPIO_ACTIVE_LOW>;
                        output-high;
index 32f07aa..8b594e9 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 118e77f..445f5dd 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 38145fd..0174449 100644 (file)
@@ -60,6 +60,7 @@
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
@@ -67,6 +68,7 @@
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        pmu_a53 {
@@ -91,6 +93,7 @@
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
 
                #address-cells = <2>;
                #size-cells = <2>;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a77970";
                        reg = <0 0xe6060000 0 0x504>;
+                       bootph-all;
                };
 
                cmt0: timer@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a77970-rst";
                        reg = <0 0xe6160000 0 0x200>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index b409a8d..c2692d6 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>, <&scif_clk_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 55a6c62..f7e506a 100644 (file)
@@ -80,6 +80,7 @@
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
@@ -87,6 +88,7 @@
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
 
                #address-cells = <2>;
                #size-cells = <2>;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a77980";
                        reg = <0 0xe6060000 0 0x50c>;
+                       bootph-all;
                };
 
                cmt0: timer@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a77980-rst";
                        reg = <0 0xe6160000 0 0x200>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index 233af30..6b87420 100644 (file)
        cluster1_opp: opp-table-1 {
                compatible = "operating-points-v2";
                opp-shared;
+
                opp-800000000 {
                        opp-hz = /bits/ 64 <800000000>;
+                       opp-microvolt = <1030000>;
                        clock-latency-ns = <300000>;
                };
                opp-1000000000 {
                        opp-hz = /bits/ 64 <1000000000>;
+                       opp-microvolt = <1030000>;
                        clock-latency-ns = <300000>;
                };
                opp-1200000000 {
                        opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <1030000>;
                        clock-latency-ns = <300000>;
                        opp-suspend;
                };
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        /* External PCIe clock - can be overridden by the board */
        soc: soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a77990";
                        reg = <0 0xe6060000 0 0x508>;
+                       bootph-all;
                };
 
                i2c_dvfs: i2c@e60b0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a77990-rst";
                        reg = <0 0xe6160000 0 0x0200>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index 5f0828a..b66cd7c 100644 (file)
@@ -65,6 +65,7 @@
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        pmu_a53 {
@@ -86,6 +87,8 @@
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                pfc: pinctrl@e6060000 {
                        compatible = "renesas,pfc-r8a77995";
                        reg = <0 0xe6060000 0 0x508>;
+                       bootph-all;
                };
 
                cmt0: timer@e60f0000 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a77995-rst";
                        reg = <0 0xe6160000 0 0x0200>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index e8c8fca..0916fd5 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        uart-has-rtscts;
        status = "okay";
index fe6d978..f1613bf 100644 (file)
@@ -47,6 +47,7 @@
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
@@ -54,6 +55,7 @@
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        pmu_a76 {
@@ -71,6 +73,8 @@
        soc: soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
@@ -93,6 +97,7 @@
                              <0 0xe6060000 0 0x16c>, <0 0xe6060800 0 0x16c>,
                              <0 0xe6068000 0 0x16c>, <0 0xe6068800 0 0x16c>,
                              <0 0xe6069000 0 0x16c>, <0 0xe6069800 0 0x16c>;
+                       bootph-all;
                };
 
                gpio0: gpio@e6058180 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a779a0-rst";
                        reg = <0 0xe6160000 0 0x4000>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                        iommus = <&ipmmu_vi1 7>;
                };
 
+               fcpvx0: fcp@fedb0000 {
+                       compatible = "renesas,fcpv";
+                       reg = <0 0xfedb0000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 1100>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP01>;
+                       resets = <&cpg 1100>;
+                       iommus = <&ipmmu_vi1 24>;
+               };
+
+               fcpvx1: fcp@fedb8000 {
+                       compatible = "renesas,fcpv";
+                       reg = <0 0xfedb8000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 1101>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP01>;
+                       resets = <&cpg 1101>;
+                       iommus = <&ipmmu_vi1 25>;
+               };
+
+               fcpvx2: fcp@fedc0000 {
+                       compatible = "renesas,fcpv";
+                       reg = <0 0xfedc0000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 1102>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP23>;
+                       resets = <&cpg 1102>;
+                       iommus = <&ipmmu_vi1 26>;
+               };
+
+               fcpvx3: fcp@fedc8000 {
+                       compatible = "renesas,fcpv";
+                       reg = <0 0xfedc8000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 1103>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP23>;
+                       resets = <&cpg 1103>;
+                       iommus = <&ipmmu_vi1 27>;
+               };
+
                vspd0: vsp@fea20000 {
                        compatible = "renesas,vsp2";
                        reg = <0 0xfea20000 0 0x5000>;
                        renesas,fcp = <&fcpvd1>;
                };
 
+               vspx0: vsp@fedd0000 {
+                       compatible = "renesas,vsp2";
+                       reg = <0 0xfedd0000 0 0x8000>;
+                       interrupts = <GIC_SPI 600 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 1028>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP01>;
+                       resets = <&cpg 1028>;
+
+                       renesas,fcp = <&fcpvx0>;
+               };
+
+               vspx1: vsp@fedd8000 {
+                       compatible = "renesas,vsp2";
+                       reg = <0 0xfedd8000 0 0x8000>;
+                       interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 1029>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP01>;
+                       resets = <&cpg 1029>;
+
+                       renesas,fcp = <&fcpvx1>;
+               };
+
+               vspx2: vsp@fede0000 {
+                       compatible = "renesas,vsp2";
+                       reg = <0 0xfede0000 0 0x8000>;
+                       interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 1030>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP23>;
+                       resets = <&cpg 1030>;
+
+                       renesas,fcp = <&fcpvx2>;
+               };
+
+               vspx3: vsp@fede8000 {
+                       compatible = "renesas,vsp2";
+                       reg = <0 0xfede8000 0 0x8000>;
+                       interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 1031>;
+                       power-domains = <&sysc R8A779A0_PD_A3ISP23>;
+                       resets = <&cpg 1031>;
+
+                       renesas,fcp = <&fcpvx3>;
+               };
+
                csi40: csi2@feaa0000 {
                        compatible = "renesas,r8a779a0-csi2";
                        reg = <0 0xfeaa0000 0 0x10000>;
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index e03baef..1781bb7 100644 (file)
 &hscif0 {
        pinctrl-0 = <&hscif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        uart-has-rtscts;
        status = "okay";
index 5d38669..ad2b039 100644 (file)
@@ -5,6 +5,14 @@
  * Copyright (C) 2021 Renesas Electronics Corp.
  */
 
+/ {
+       aliases {
+               ethernet0 = &rswitch_port0;
+               ethernet1 = &rswitch_port1;
+               ethernet2 = &rswitch_port2;
+       };
+};
+
 &eth_serdes {
        status = "okay";
 };
        pinctrl-0 = <&tsn0_pins>, <&tsn1_pins>, <&tsn2_pins>;
        pinctrl-names = "default";
        status = "okay";
+};
+
+&rswitch_port0 {
+       reg = <0>;
+       phy-handle = <&u101>;
+       phy-mode = "sgmii";
+       phys = <&eth_serdes 0>;
+       status = "okay";
 
-       ethernet-ports {
+       mdio {
                #address-cells = <1>;
                #size-cells = <0>;
 
-               port@0 {
-                       reg = <0>;
-                       phy-handle = <&u101>;
-                       phy-mode = "sgmii";
-                       phys = <&eth_serdes 0>;
-
-                       mdio {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               u101: ethernet-phy@1 {
-                                       reg = <1>;
-                                       compatible = "ethernet-phy-ieee802.3-c45";
-                                       interrupts-extended = <&gpio3 10 IRQ_TYPE_LEVEL_LOW>;
-                               };
-                       };
-               };
-               port@1 {
+               u101: ethernet-phy@1 {
                        reg = <1>;
-                       phy-handle = <&u201>;
-                       phy-mode = "sgmii";
-                       phys = <&eth_serdes 1>;
-
-                       mdio {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               u201: ethernet-phy@2 {
-                                       reg = <2>;
-                                       compatible = "ethernet-phy-ieee802.3-c45";
-                                       interrupts-extended = <&gpio3 11 IRQ_TYPE_LEVEL_LOW>;
-                               };
-                       };
+                       compatible = "ethernet-phy-ieee802.3-c45";
+                       interrupts-extended = <&gpio3 10 IRQ_TYPE_LEVEL_LOW>;
                };
-               port@2 {
+       };
+};
+
+&rswitch_port1 {
+       reg = <1>;
+       phy-handle = <&u201>;
+       phy-mode = "sgmii";
+       phys = <&eth_serdes 1>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               u201: ethernet-phy@2 {
                        reg = <2>;
-                       phy-handle = <&u301>;
-                       phy-mode = "sgmii";
-                       phys = <&eth_serdes 2>;
-
-                       mdio {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               u301: ethernet-phy@3 {
-                                       reg = <3>;
-                                       compatible = "ethernet-phy-ieee802.3-c45";
-                                       interrupts-extended = <&gpio3 9 IRQ_TYPE_LEVEL_LOW>;
-                               };
-                       };
+                       compatible = "ethernet-phy-ieee802.3-c45";
+                       interrupts-extended = <&gpio3 11 IRQ_TYPE_LEVEL_LOW>;
+               };
+       };
+};
+
+&rswitch_port2 {
+       reg = <2>;
+       phy-handle = <&u301>;
+       phy-mode = "sgmii";
+       phys = <&eth_serdes 2>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               u301: ethernet-phy@3 {
+                       reg = <3>;
+                       compatible = "ethernet-phy-ieee802.3-c45";
+                       interrupts-extended = <&gpio3 9 IRQ_TYPE_LEVEL_LOW>;
                };
        };
 };
index 054498e..b496495 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        pcie0_clkref: pcie0-clkref {
        soc: soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                        compatible = "renesas,pfc-r8a779f0";
                        reg = <0 0xe6050000 0 0x16c>, <0 0xe6050800 0 0x16c>,
                              <0 0xe6051000 0 0x16c>, <0 0xe6051800 0 0x16c>;
+                       bootph-all;
                };
 
                gpio0: gpio@e6050180 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a779f0-rst";
                        reg = <0 0xe6160000 0 0x4000>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
 
-                               port@0 {
+                               rswitch_port0: port@0 {
                                        reg = <0>;
                                        phys = <&eth_serdes 0>;
+                                       status = "disabled";
                                };
-                               port@1 {
+                               rswitch_port1: port@1 {
                                        reg = <1>;
                                        phys = <&eth_serdes 1>;
+                                       status = "disabled";
                                };
-                               port@2 {
+                               rswitch_port2: port@2 {
                                        reg = <2>;
                                        phys = <&eth_serdes 2>;
+                                       status = "disabled";
                                };
                        };
                };
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index 5d71d52..67b18f2 100644 (file)
@@ -22,7 +22,8 @@
                i2c5 = &i2c5;
                serial0 = &hscif0;
                serial1 = &hscif1;
-               ethernet0 = &rswitch;
+               ethernet0 = &rswitch_port0;
+               ethernet1 = &rswitch_port1;
        };
 
        chosen {
@@ -67,6 +68,7 @@
 &hscif0 {
        pinctrl-0 = <&hscif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        uart-has-rtscts;
        status = "okay";
        pinctrl-0 = <&tsn0_pins>, <&tsn1_pins>;
        pinctrl-names = "default";
        status = "okay";
+};
+
+&rswitch_port0 {
+       reg = <0>;
+       phy-handle = <&ic99>;
+       phy-mode = "sgmii";
+       phys = <&eth_serdes 0>;
+       status = "okay";
 
-       ethernet-ports {
+       mdio {
                #address-cells = <1>;
                #size-cells = <0>;
 
-               port@0 {
-                       reg = <0>;
-                       phy-handle = <&ic99>;
-                       phy-mode = "sgmii";
-                       phys = <&eth_serdes 0>;
-
-                       mdio {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               ic99: ethernet-phy@1 {
-                                       reg = <1>;
-                                       compatible = "ethernet-phy-ieee802.3-c45";
-                                       interrupts-extended = <&gpio3 10 IRQ_TYPE_LEVEL_LOW>;
-                               };
-                       };
-               };
-
-               port@1 {
+               ic99: ethernet-phy@1 {
                        reg = <1>;
-                       phy-handle = <&ic102>;
-                       phy-mode = "sgmii";
-                       phys = <&eth_serdes 1>;
-
-                       mdio {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               ic102: ethernet-phy@2 {
-                                       reg = <2>;
-                                       compatible = "ethernet-phy-ieee802.3-c45";
-                                       interrupts-extended = <&gpio3 11 IRQ_TYPE_LEVEL_LOW>;
-                               };
-                       };
+                       compatible = "ethernet-phy-ieee802.3-c45";
+                       interrupts-extended = <&gpio3 10 IRQ_TYPE_LEVEL_LOW>;
                };
+       };
+};
+
+&rswitch_port1 {
+       reg = <1>;
+       phy-handle = <&ic102>;
+       phy-mode = "sgmii";
+       phys = <&eth_serdes 1>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
 
-               port@2 {
-                       status = "disabled";
+               ic102: ethernet-phy@2 {
+                       reg = <2>;
+                       compatible = "ethernet-phy-ieee802.3-c45";
+                       interrupts-extended = <&gpio3 11 IRQ_TYPE_LEVEL_LOW>;
                };
        };
 };
index 104f740..1760720 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr {
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        pcie0_clkref: pcie0-clkref {
        soc: soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                              <0 0xe6060000 0 0x16c>, <0 0xe6060800 0 0x16c>,
                              <0 0xe6061000 0 0x16c>, <0 0xe6061800 0 0x16c>,
                              <0 0xe6068000 0 0x16c>;
+                       bootph-all;
                };
 
                gpio0: gpio@e6050180 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a779g0-rst";
                        reg = <0 0xe6160000 0 0x4000>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                        iommus = <&ipmmu_vi1 7>;
                };
 
+               fcpvx0: fcp@fedb0000 {
+                       compatible = "renesas,fcpv";
+                       reg = <0 0xfedb0000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 1100>;
+                       power-domains = <&sysc R8A779G0_PD_A3ISP0>;
+                       resets = <&cpg 1100>;
+                       iommus = <&ipmmu_vi1 24>;
+               };
+
+               fcpvx1: fcp@fedb8000 {
+                       compatible = "renesas,fcpv";
+                       reg = <0 0xfedb8000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 1101>;
+                       power-domains = <&sysc R8A779G0_PD_A3ISP1>;
+                       resets = <&cpg 1101>;
+                       iommus = <&ipmmu_vi1 25>;
+               };
+
                vspd0: vsp@fea20000 {
                        compatible = "renesas,vsp2";
                        reg = <0 0xfea20000 0 0x7000>;
                        renesas,fcp = <&fcpvd1>;
                };
 
+               vspx0: vsp@fedd0000 {
+                       compatible = "renesas,vsp2";
+                       reg = <0 0xfedd0000 0 0x8000>;
+                       interrupts = <GIC_SPI 556 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 1028>;
+                       power-domains = <&sysc R8A779G0_PD_A3ISP0>;
+                       resets = <&cpg 1028>;
+
+                       renesas,fcp = <&fcpvx0>;
+               };
+
+               vspx1: vsp@fedd8000 {
+                       compatible = "renesas,vsp2";
+                       reg = <0 0xfedd8000 0 0x8000>;
+                       interrupts = <GIC_SPI 557 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 1029>;
+                       power-domains = <&sysc R8A779G0_PD_A3ISP1>;
+                       resets = <&cpg 1029>;
+
+                       renesas,fcp = <&fcpvx1>;
+               };
+
                du: display@feb00000 {
                        compatible = "renesas,du-r8a779g0";
                        reg = <0 0xfeb00000 0 0x40000>;
                        };
                };
 
-               fcpvx0: fcp@fedb0000 {
-                       compatible = "renesas,fcpv";
-                       reg = <0 0xfedb0000 0 0x200>;
-                       clocks = <&cpg CPG_MOD 1100>;
-                       power-domains = <&sysc R8A779G0_PD_A3ISP0>;
-                       resets = <&cpg 1100>;
-                       iommus = <&ipmmu_vi1 24>;
-               };
-
-               fcpvx1: fcp@fedb8000 {
-                       compatible = "renesas,fcpv";
-                       reg = <0 0xfedb8000 0 0x200>;
-                       clocks = <&cpg CPG_MOD 1101>;
-                       power-domains = <&sysc R8A779G0_PD_A3ISP1>;
-                       resets = <&cpg 1101>;
-                       iommus = <&ipmmu_vi1 25>;
-               };
-
-               vspx0: vsp@fedd0000 {
-                       compatible = "renesas,vsp2";
-                       reg = <0 0xfedd0000 0 0x8000>;
-                       interrupts = <GIC_SPI 556 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&cpg CPG_MOD 1028>;
-                       power-domains = <&sysc R8A779G0_PD_A3ISP0>;
-                       resets = <&cpg 1028>;
-
-                       renesas,fcp = <&fcpvx0>;
-               };
-
-               vspx1: vsp@fedd8000 {
-                       compatible = "renesas,vsp2";
-                       reg = <0 0xfedd8000 0 0x8000>;
-                       interrupts = <GIC_SPI 557 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&cpg CPG_MOD 1029>;
-                       power-domains = <&sysc R8A779G0_PD_A3ISP1>;
-                       resets = <&cpg 1029>;
-
-                       renesas,fcp = <&fcpvx1>;
-               };
-
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
index 18fd52f..4d890e0 100644 (file)
@@ -46,6 +46,8 @@
                serial0 = &hscif0;
                serial1 = &hscif2;
                ethernet0 = &avb0;
+               ethernet1 = &avb1;
+               ethernet2 = &avb2;
        };
 
        can_transceiver0: can-phy0 {
 &avb0 {
        pinctrl-0 = <&avb0_pins>;
        pinctrl-names = "default";
-       phy-handle = <&phy0>;
+       phy-handle = <&avb0_phy>;
        tx-internal-delay-ps = <2000>;
        status = "okay";
 
-       phy0: ethernet-phy@0 {
-               compatible = "ethernet-phy-id0022.1622",
-                            "ethernet-phy-ieee802.3-c22";
-               rxc-skew-ps = <1500>;
-               reg = <0>;
-               interrupts-extended = <&gpio7 5 IRQ_TYPE_LEVEL_LOW>;
-               reset-gpios = <&gpio7 10 GPIO_ACTIVE_LOW>;
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               avb0_phy: ethernet-phy@0 {
+                       compatible = "ethernet-phy-id0022.1622",
+                               "ethernet-phy-ieee802.3-c22";
+                               rxc-skew-ps = <1500>;
+                               reg = <0>;
+                               interrupts-extended = <&gpio7 5 IRQ_TYPE_LEVEL_LOW>;
+                               reset-gpios = <&gpio7 10 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&avb1 {
+       pinctrl-0 = <&avb1_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&avb1_phy>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               reset-gpios = <&gpio6 1 GPIO_ACTIVE_LOW>;
+               reset-post-delay-us = <4000>;
+
+               avb1_phy: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c45";
+                       reg = <0>;
+                       interrupts-extended = <&gpio6 3 IRQ_TYPE_LEVEL_LOW>;
+               };
+       };
+};
+
+&avb2 {
+       pinctrl-0 = <&avb2_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&avb2_phy>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               reset-gpios = <&gpio5 5 GPIO_ACTIVE_LOW>;
+               reset-post-delay-us = <4000>;
+
+               avb2_phy: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c45";
+                       reg = <0>;
+                       interrupts-extended = <&gpio5 4 IRQ_TYPE_LEVEL_LOW>;
+               };
        };
 };
 
        };
 };
 
-&dsi0 {
-       status = "okay";
-
-       ports {
-               port@1 {
-                       reg = <1>;
-
-                       dsi0_out: endpoint {
-                               remote-endpoint = <&sn65dsi86_in0>;
-                               data-lanes = <1 2 3 4>;
-                       };
-               };
-       };
-};
-
-&du {
-       status = "okay";
-};
-
 &csi40 {
        status = "okay";
 
        };
 };
 
+&dsi0 {
+       status = "okay";
+
+       ports {
+               port@1 {
+                       reg = <1>;
+
+                       dsi0_out: endpoint {
+                               remote-endpoint = <&sn65dsi86_in0>;
+                               data-lanes = <1 2 3 4>;
+                       };
+               };
+       };
+};
+
+&du {
+       status = "okay";
+};
+
 &extal_clk {
        clock-frequency = <16666666>;
 };
 &hscif0 {
        pinctrl-0 = <&hscif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        uart-has-rtscts;
        status = "okay";
                };
        };
 
+       avb1_pins: avb1 {
+               mux {
+                       groups = "avb1_link", "avb1_mdio", "avb1_rgmii",
+                                "avb1_txcrefclk";
+                       function = "avb1";
+               };
+
+               link {
+                       groups = "avb1_link";
+                       bias-disable;
+               };
+
+               mdio {
+                       groups = "avb1_mdio";
+                       drive-strength = <24>;
+                       bias-disable;
+               };
+
+               rgmii {
+                       groups = "avb1_rgmii";
+                       drive-strength = <24>;
+                       bias-disable;
+               };
+       };
+
+       avb2_pins: avb2 {
+               mux {
+                       groups = "avb2_link", "avb2_mdio", "avb2_rgmii",
+                                "avb2_txcrefclk";
+                       function = "avb2";
+               };
+
+               link {
+                       groups = "avb2_link";
+                       bias-disable;
+               };
+
+               mdio {
+                       groups = "avb2_mdio";
+                       drive-strength = <24>;
+                       bias-disable;
+               };
+
+               rgmii {
+                       groups = "avb2_rgmii";
+                       drive-strength = <24>;
+                       bias-disable;
+               };
+       };
+
        can_clk_pins: can-clk {
                groups = "can_clk";
                function = "can_clk";
index d0c01c0..8524a1e 100644 (file)
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        extalr_clk: extalr-clk {
                #clock-cells = <0>;
                /* This value must be overridden by the board */
                clock-frequency = <0>;
+               bootph-all;
        };
 
        pcie0_clkref: pcie0-clkref {
        soc: soc {
                compatible = "simple-bus";
                interrupt-parent = <&gic>;
+               bootph-all;
+
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                              <0 0xe6058000 0 0x16c>, <0 0xe6058800 0 0x16c>,
                              <0 0xe6060000 0 0x16c>, <0 0xe6060800 0 0x16c>,
                              <0 0xe6061000 0 0x16c>, <0 0xe6061800 0 0x16c>;
+                       bootph-all;
                };
 
                gpio0: gpio@e6050180 {
                        #clock-cells = <2>;
                        #power-domain-cells = <0>;
                        #reset-cells = <1>;
+                       bootph-all;
                };
 
                rst: reset-controller@e6160000 {
                        compatible = "renesas,r8a779h0-rst";
                        reg = <0 0xe6160000 0 0x4000>;
+                       bootph-all;
                };
 
                sysc: system-controller@e6180000 {
                        rx-internal-delay-ps = <0>;
                        tx-internal-delay-ps = <0>;
                        iommus = <&ipmmu_hc 0>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
                        status = "disabled";
                };
 
                        rx-internal-delay-ps = <0>;
                        tx-internal-delay-ps = <0>;
                        iommus = <&ipmmu_hc 1>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
                        status = "disabled";
                };
 
                        rx-internal-delay-ps = <0>;
                        tx-internal-delay-ps = <0>;
                        iommus = <&ipmmu_hc 2>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
                        status = "disabled";
                };
 
                        resets = <&cpg 508>;
                };
 
+               fcpvx0: fcp@fedb0000 {
+                       compatible = "renesas,fcpv";
+                       reg = <0 0xfedb0000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 1100>;
+                       power-domains = <&sysc R8A779H0_PD_A3ISP0>;
+                       resets = <&cpg 1100>;
+                       iommus = <&ipmmu_vi1 24>;
+               };
+
                vspd0: vsp@fea20000 {
                        compatible = "renesas,vsp2";
                        reg = <0 0xfea20000 0 0x8000>;
                        renesas,fcp = <&fcpvd0>;
                };
 
+               vspx0: vsp@fedd0000 {
+                       compatible = "renesas,vsp2";
+                       reg = <0 0xfedd0000 0 0x8000>;
+                       interrupts = <GIC_SPI 556 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 1028>;
+                       power-domains = <&sysc R8A779H0_PD_A3ISP0>;
+                       resets = <&cpg 1028>;
+
+                       renesas,fcp = <&fcpvx0>;
+               };
+
                du: display@feb00000 {
                        compatible = "renesas,du-r8a779h0";
                        reg = <0 0xfeb00000 0 0x40000>;
                prr: chipid@fff00044 {
                        compatible = "renesas,prr";
                        reg = <0 0xfff00044 0 4>;
+                       bootph-all;
                };
        };
 
diff --git a/src/arm64/renesas/r9a07g044l2-remi-pi.dts b/src/arm64/renesas/r9a07g044l2-remi-pi.dts
new file mode 100644 (file)
index 0000000..3267e7b
--- /dev/null
@@ -0,0 +1,339 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Source for the MYIR Remi Pi
+ *
+ * Copyright (C) 2022 MYIR Electronics Corp.
+ * Copyright (C) 2025 Collabora Ltd.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
+
+#include "r9a07g044l2.dtsi"
+
+/ {
+       model = "MYIR Tech Limited Remi Pi MYB-YG2LX-REMI";
+       compatible = "myir,remi-pi", "renesas,r9a07g044l2", "renesas,r9a07g044";
+
+       aliases {
+               ethernet0 = &eth0;
+               ethernet1 = &eth1;
+
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+
+               mmc0 = &sdhi0;
+
+               serial0 = &scif0;
+               serial4 = &scif4;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       hdmi-out {
+               compatible = "hdmi-connector";
+               type = "a";
+               ddc-i2c-bus = <&i2c1>;
+
+               port {
+                       hdmi_con: endpoint {
+                               remote-endpoint = <&lt8912_out>;
+                       };
+               };
+       };
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x0 0x38000000>;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               vin-supply = <&reg_5p0v>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               vin-supply = <&reg_5p0v>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_5p0v: regulator-5p0v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-5.0V";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       reg_1p1v: regulator-vdd-core {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.1V";
+               regulator-min-microvolt = <1100000>;
+               regulator-max-microvolt = <1100000>;
+               regulator-always-on;
+       };
+};
+
+&dsi {
+       status = "okay";
+
+       ports {
+               port@1 {
+                       dsi_out: endpoint {
+                               remote-endpoint = <&lt8912_in>;
+                               data-lanes = <1 2 3 4>;
+                       };
+               };
+       };
+};
+
+&du {
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&eth0 {
+       pinctrl-0 = <&eth0_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&phy0>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+
+       phy0: ethernet-phy@4 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <4>;
+               interrupts-extended = <&pinctrl RZG2L_GPIO(44, 2) IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&pinctrl RZG2L_GPIO(44, 3) GPIO_ACTIVE_LOW>;
+       };
+};
+
+&eth1 {
+       pinctrl-0 = <&eth1_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&phy1>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+
+       phy1: ethernet-phy@6 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <6>;
+               interrupts-extended = <&pinctrl RZG2L_GPIO(43, 2) IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&pinctrl RZG2L_GPIO(43, 3) GPIO_ACTIVE_LOW>;
+       };
+};
+
+&extal_clk {
+       clock-frequency = <24000000>;
+};
+
+&gpu {
+       mali-supply = <&reg_1p1v>;
+};
+
+&i2c0 {
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-names = "default";
+
+       clock-frequency = <400000>;
+       status = "okay";
+
+       hdmi-bridge@48 {
+               compatible = "lontium,lt8912b";
+               reg = <0x48> ;
+               reset-gpios = <&pinctrl RZG2L_GPIO(42, 2) GPIO_ACTIVE_LOW>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               lt8912_in: endpoint {
+                                       data-lanes = <1 2 3 4>;
+                                       remote-endpoint = <&dsi_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               lt8912_out: endpoint {
+                                       remote-endpoint = <&hdmi_con>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c1 {
+       pinctrl-0 = <&i2c1_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <100000>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-0 = <&i2c2_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <100000>;
+       status = "okay";
+};
+
+&i2c3 {
+       pinctrl-0 = <&i2c3_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <100000>;
+       status = "okay";
+};
+
+&mtu3 {
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&ostm1 {
+       status = "okay";
+};
+
+&ostm2 {
+       status = "okay";
+};
+
+&phyrst {
+       status = "okay";
+};
+
+&pinctrl {
+       eth0_pins: eth0 {
+               pinmux = <RZG2L_PORT_PINMUX(27, 1, 1)>, /* ET0_MDC */
+                        <RZG2L_PORT_PINMUX(28, 0, 1)>, /* ET0_MDIO */
+                        <RZG2L_PORT_PINMUX(20, 0, 1)>, /* ET0_TXC */
+                        <RZG2L_PORT_PINMUX(20, 1, 1)>, /* ET0_TX_CTL */
+                        <RZG2L_PORT_PINMUX(20, 2, 1)>, /* ET0_TXD0 */
+                        <RZG2L_PORT_PINMUX(21, 0, 1)>, /* ET0_TXD1 */
+                        <RZG2L_PORT_PINMUX(21, 1, 1)>, /* ET0_TXD2 */
+                        <RZG2L_PORT_PINMUX(22, 0, 1)>, /* ET0_TXD3 */
+                        <RZG2L_PORT_PINMUX(24, 0, 1)>, /* ET0_RXC */
+                        <RZG2L_PORT_PINMUX(24, 1, 1)>, /* ET0_RX_CTL */
+                        <RZG2L_PORT_PINMUX(25, 0, 1)>, /* ET0_RXD0 */
+                        <RZG2L_PORT_PINMUX(25, 1, 1)>, /* ET0_RXD1 */
+                        <RZG2L_PORT_PINMUX(26, 0, 1)>, /* ET0_RXD2 */
+                        <RZG2L_PORT_PINMUX(26, 1, 1)>; /* ET0_RXD3 */
+       };
+
+       eth1_pins: eth1 {
+               pinmux = <RZG2L_PORT_PINMUX(37, 0, 1)>, /* ET1_MDC */
+                        <RZG2L_PORT_PINMUX(37, 1, 1)>, /* ET1_MDIO */
+                        <RZG2L_PORT_PINMUX(29, 0, 1)>, /* ET1_TXC */
+                        <RZG2L_PORT_PINMUX(29, 1, 1)>, /* ET1_TX_CTL */
+                        <RZG2L_PORT_PINMUX(30, 0, 1)>, /* ET1_TXD0 */
+                        <RZG2L_PORT_PINMUX(30, 1, 1)>, /* ET1_TXD1 */
+                        <RZG2L_PORT_PINMUX(31, 0, 1)>, /* ET1_TXD2 */
+                        <RZG2L_PORT_PINMUX(31, 1, 1)>, /* ET1_TXD3 */
+                        <RZG2L_PORT_PINMUX(33, 1, 1)>, /* ET1_RXC */
+                        <RZG2L_PORT_PINMUX(34, 0, 1)>, /* ET1_RX_CTL */
+                        <RZG2L_PORT_PINMUX(34, 1, 1)>, /* ET1_RXD0 */
+                        <RZG2L_PORT_PINMUX(35, 0, 1)>, /* ET1_RXD1 */
+                        <RZG2L_PORT_PINMUX(35, 1, 1)>, /* ET1_RXD2 */
+                        <RZG2L_PORT_PINMUX(36, 0, 1)>; /* ET1_RXD3 */
+       };
+
+       i2c0_pins: i2c0 {
+               pins = "RIIC0_SDA", "RIIC0_SCL";
+               input-enable;
+       };
+
+       i2c1_pins: i2c1 {
+               pins = "RIIC1_SDA", "RIIC1_SCL";
+               input-enable;
+       };
+
+       i2c2_pins: i2c2 {
+               pinmux = <RZG2L_PORT_PINMUX(3, 0, 2)>, /* SDA */
+                        <RZG2L_PORT_PINMUX(3, 1, 2)>; /* SCL */
+       };
+
+       i2c3_pins: i2c3 {
+               pinmux = <RZG2L_PORT_PINMUX(18, 0, 3)>, /* SDA */
+                        <RZG2L_PORT_PINMUX(18, 1, 3)>; /* SCL */
+       };
+
+       scif0_pins: scif0 {
+               pinmux = <RZG2L_PORT_PINMUX(38, 0, 1)>, /* TxD */
+                        <RZG2L_PORT_PINMUX(38, 1, 1)>; /* RxD */
+       };
+
+       scif4_pins: scif4 {
+               pinmux = <RZG2L_PORT_PINMUX(2, 0, 5)>, /* TxD */
+                        <RZG2L_PORT_PINMUX(2, 1, 5)>; /* RxD */
+       };
+
+       sdhi0_pins: sd0 {
+               sd0-ctrl {
+                       pins = "SD0_CLK", "SD0_CMD";
+                       power-source = <1800>;
+               };
+
+               sd0-data {
+                       pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3",
+                              "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7";
+                       power-source = <1800>;
+               };
+
+               sd0-rst {
+                       pins = "SD0_RST#";
+                       power-source = <1800>;
+               };
+       };
+};
+
+&scif0 {
+       pinctrl-0 = <&scif0_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&scif4 {
+       pinctrl-0 = <&scif4_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sdhi0 {
+       pinctrl-0 = <&sdhi0_pins>;
+       pinctrl-1 = <&sdhi0_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";
+};
+
+&usb2_phy1 {
+       status = "okay";
+};
index a9b98db..0364f89 100644 (file)
                clock-frequency = <0>;
        };
 
+       cluster0_opp: opp-table-0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-137500000 {
+                       opp-hz = /bits/ 64 <137500000>;
+                       opp-microvolt = <940000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-275000000 {
+                       opp-hz = /bits/ 64 <275000000>;
+                       opp-microvolt = <940000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-550000000 {
+                       opp-hz = /bits/ 64 <550000000>;
+                       opp-microvolt = <940000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-1100000000 {
+                       opp-hz = /bits/ 64 <1100000000>;
+                       opp-microvolt = <940000>;
+                       clock-latency-ns = <300000>;
+                       opp-suspend;
+               };
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
@@ -40,6 +67,7 @@
                        next-level-cache = <&L3_CA55>;
                        enable-method = "psci";
                        clocks = <&cpg CPG_CORE R9A08G045_CLK_I>;
+                       operating-points-v2 = <&cluster0_opp>;
                };
 
                L3_CA55: cache-controller-0 {
                                     <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "lpm_int", "ca55stbydone_int",
                                          "cm33stbyr_int", "ca55_deny";
-                       status = "disabled";
                };
 
                pinctrl: pinctrl@11030000 {
diff --git a/src/arm64/renesas/r9a08g045s33-smarc-pmod1-type-3a.dtso b/src/arm64/renesas/r9a08g045s33-smarc-pmod1-type-3a.dtso
new file mode 100644 (file)
index 0000000..4a81e3a
--- /dev/null
@@ -0,0 +1,48 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Source for the RZ/G3S SMARC Carrier II EVK PMOD parts
+ *
+ * Copyright (C) 2024 Renesas Electronics Corp.
+ *
+ *
+ * [Connection]
+ *
+ * SMARC Carrier II EVK
+ * +--------------------------------------------+
+ * |PMOD1_3A (PMOD1 PIN HEADER)                        |
+ * |   SCIF1_CTS# (pin1)  (pin7)  PMOD1_GPIO10 |
+ * |   SCIF1_TXD  (pin2)  (pin8)  PMOD1_GPIO11 |
+ * |   SCIF1_RXD  (pin3)  (pin9)  PMOD1_GPIO12 |
+ * |   SCIF1_RTS# (pin4)  (pin10) PMOD1_GPIO13 |
+ * |   GND        (pin5)  (pin11) GND          |
+ * |   PWR_PMOD1  (pin6)  (pin12) GND          |
+ * +--------------------------------------------+
+ *
+ * The following switches should be set as follows for SCIF1:
+ * - SW_CONFIG2:  ON
+ * - SW_OPT_MUX4: ON
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
+#include "rzg3s-smarc-switches.h"
+
+&pinctrl {
+       scif1_pins: scif1-pins {
+               pinmux = <RZG2L_PORT_PINMUX(14, 0, 1)>, /* TXD */
+                        <RZG2L_PORT_PINMUX(14, 1, 1)>, /* RXD */
+                        <RZG2L_PORT_PINMUX(16, 0, 1)>, /* CTS# */
+                        <RZG2L_PORT_PINMUX(16, 1, 1)>; /* RTS# */
+       };
+};
+
+#if SW_CONFIG3 == SW_ON && SW_OPT_MUX4 == SW_ON
+&scif1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&scif1_pins>;
+       uart-has-rtscts;
+       status = "okay";
+};
+#endif
index 200e9ea..c93aa16 100644 (file)
                        #power-domain-cells = <0>;
                };
 
+               sys: system-controller@10430000 {
+                       compatible = "renesas,r9a09g047-sys";
+                       reg = <0 0x10430000 0 0x10000>;
+                       clocks = <&cpg CPG_CORE R9A09G047_SYS_0_PCLK>;
+                       resets = <&cpg 0x30>;
+               };
+
                scif0: serial@11c01400 {
                        compatible = "renesas,scif-r9a09g047", "renesas,scif-r9a09g057";
                        reg = <0 0x11c01400 0 0x400>;
                        status = "disabled";
                };
 
+               wdt1: watchdog@14400000 {
+                       compatible = "renesas,r9a09g047-wdt", "renesas,r9a09g057-wdt";
+                       reg = <0 0x14400000 0 0x400>;
+                       clocks = <&cpg CPG_MOD 0x4d>, <&cpg CPG_MOD 0x4e>;
+                       clock-names = "pclk", "oscclk";
+                       resets = <&cpg 0x76>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               wdt2: watchdog@13000000 {
+                       compatible = "renesas,r9a09g047-wdt", "renesas,r9a09g057-wdt";
+                       reg = <0 0x13000000 0 0x400>;
+                       clocks = <&cpg CPG_MOD 0x4f>, <&cpg CPG_MOD 0x50>;
+                       clock-names = "pclk", "oscclk";
+                       resets = <&cpg 0x77>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               wdt3: watchdog@13000400 {
+                       compatible = "renesas,r9a09g047-wdt", "renesas,r9a09g057-wdt";
+                       reg = <0 0x13000400 0 0x400>;
+                       clocks = <&cpg CPG_MOD 0x51>, <&cpg CPG_MOD 0x52>;
+                       clock-names = "pclk", "oscclk";
+                       resets = <&cpg 0x78>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
                i2c0: i2c@14400400 {
                        compatible = "renesas,riic-r9a09g047", "renesas,riic-r9a09g057";
                        reg = <0 0x14400400 0 0x400>;
index 1c550b2..0cd00bb 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";
                        reg = <0 0x10430000 0 0x10000>;
                        clocks = <&cpg CPG_CORE R9A09G057_SYS_0_PCLK>;
                        resets = <&cpg 0x30>;
-                       status = "disabled";
                };
 
                ostm0: timer@11800000 {
                        status = "disabled";
                };
 
+               gpu: gpu@14850000 {
+                       compatible = "renesas,r9a09g057-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>,
index 0b705c9..063eca0 100644 (file)
                reg = <0x2 0x40000000 0x2 0x00000000>;
        };
 
+       reg_0p8v: regulator0 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "fixed-0.8V";
+               regulator-min-microvolt = <800000>;
+               regulator-max-microvolt = <800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
        reg_3p3v: regulator1 {
                compatible = "regulator-fixed";
 
        clock-frequency = <22579200>;
 };
 
+&gpu {
+       status = "okay";
+       mali-supply = <&reg_0p8v>;
+};
+
 &i2c0 {
        pinctrl-0 = <&i2c0_pins>;
        pinctrl-names = "default";
diff --git a/src/arm64/renesas/r9a09g057h48-kakip.dts b/src/arm64/renesas/r9a09g057h48-kakip.dts
new file mode 100644 (file)
index 0000000..d2586d2
--- /dev/null
@@ -0,0 +1,136 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Source for Yuridenki-Shokai the Kakip board
+ *
+ * Copyright (C) 2024 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/pinctrl/renesas,r9a09g057-pinctrl.h>
+#include <dt-bindings/gpio/gpio.h>
+#include "r9a09g057.dtsi"
+
+/ {
+       model = "Yuridenki-Shokai Kakip Board based on r9a09g057h48";
+       compatible = "yuridenki,kakip", "renesas,r9a09g057h48", "renesas,r9a09g057";
+
+       aliases {
+               serial0 = &scif;
+               mmc0 = &sdhi0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x1 0xF8000000>;
+       };
+
+       reg_3p3v: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       vqmmc_sdhi0: regulator-vccq-sdhi0 {
+               compatible = "regulator-gpio";
+               regulator-name = "SDHI0 VccQ";
+               gpios = <&pinctrl RZV2H_GPIO(A, 0) GPIO_ACTIVE_HIGH>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios-states = <0>;
+               states = <3300000 0>, <1800000 1>;
+       };
+};
+
+&ostm0 {
+       status = "okay";
+};
+
+&ostm1 {
+       status = "okay";
+};
+
+&ostm2 {
+       status = "okay";
+};
+
+&ostm3 {
+       status = "okay";
+};
+
+&ostm4 {
+       status = "okay";
+};
+
+&ostm5 {
+       status = "okay";
+};
+
+&ostm6 {
+       status = "okay";
+};
+
+&ostm7 {
+       status = "okay";
+};
+
+&pinctrl {
+       scif_pins: scif {
+               pins =  "SCIF_RXD", "SCIF_TXD";
+       };
+
+       sd0-pwr-en-hog {
+               gpio-hog;
+               gpios = <RZV2H_GPIO(A, 1) GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "sd0_pwr_en";
+       };
+
+       sdhi0_pins: sd0 {
+               sd0-clk {
+                       pins = "SD0CLK";
+                       renesas,output-impedance = <3>;
+                       slew-rate = <0>;
+               };
+
+               sd0-data {
+                       pins = "SD0DAT0", "SD0DAT1", "SD0DAT2", "SD0DAT3", "SD0CMD";
+                       input-enable;
+                       renesas,output-impedance = <3>;
+                       slew-rate = <0>;
+               };
+
+               sd0-mux {
+                       pinmux = <RZV2H_PORT_PINMUX(A, 5, 15)>; /* SD0_CD */
+               };
+       };
+};
+
+&qextal_clk {
+       clock-frequency = <24000000>;
+};
+
+&scif {
+       pinctrl-0 = <&scif_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&sdhi0 {
+       pinctrl-0 = <&sdhi0_pins>;
+       pinctrl-names = "default";
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&vqmmc_sdhi0>;
+       bus-width = <4>;
+
+       status = "okay";
+};
index 6b583ae..f4ba050 100644 (file)
@@ -26,3 +26,7 @@
 &rtxin_clk {
        clock-frequency = <32768>;
 };
+
+&wdt1 {
+       status = "okay";
+};
index ef12c1c..39845fa 100644 (file)
@@ -9,25 +9,7 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
 
-/*
- * On-board switches' states:
- * @SW_OFF: switch's state is OFF
- * @SW_ON:  switch's state is ON
- */
-#define SW_OFF         0
-#define SW_ON          1
-
-/*
- * SW_CONFIG[x] switches' states:
- * @SW_CONFIG2:
- *     SW_OFF - SD0 is connected to eMMC
- *     SW_ON  - SD0 is connected to uSD0 card
- * @SW_CONFIG3:
- *     SW_OFF - SD2 is connected to SoC
- *     SW_ON  - SCIF1, SSI0, IRQ0, IRQ1 connected to SoC
- */
-#define SW_CONFIG2     SW_OFF
-#define SW_CONFIG3     SW_ON
+#include "rzg3s-smarc-switches.h"
 
 / {
        compatible = "renesas,rzg3s-smarcm", "renesas,r9a08g045s33", "renesas,r9a08g045";
diff --git a/src/arm64/renesas/rzg3s-smarc-switches.h b/src/arm64/renesas/rzg3s-smarc-switches.h
new file mode 100644 (file)
index 0000000..bbf908a
--- /dev/null
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * On-board switches for the Renesas RZ/G3S SMARC Module and RZ SMARC Carrier II
+ * boards.
+ *
+ * Copyright (C) 2024 Renesas Electronics Corp.
+ */
+
+#ifndef __RZG3S_SMARC_SWITCHES_H__
+#define __RZG3S_SMARC_SWITCHES_H__
+
+/*
+ * On-board switches' states:
+ * @SW_OFF: switch's state is OFF
+ * @SW_ON:  switch's state is ON
+ */
+#define SW_OFF         0
+#define SW_ON          1
+
+/*
+ * SW_CONFIG[x] switches' states:
+ * @SW_CONFIG2:
+ *     SW_OFF - SD0 is connected to eMMC
+ *     SW_ON  - SD0 is connected to uSD0 card
+ * @SW_CONFIG3:
+ *     SW_OFF - SD2 is connected to SoC
+ *     SW_ON  - SCIF1, SSI0, IRQ0, IRQ1 connected to SoC
+ */
+#define SW_CONFIG2     SW_OFF
+#define SW_CONFIG3     SW_ON
+
+/*
+ * SW_OPT_MUX[x] switches' states:
+ * @SW_OPT_MUX4:
+ *     SW_OFF - The SMARC SER0 signals are routed to M.2 Key E UART
+ *     SW_ON  - The SMARC SER0 signals are routed to PMOD1
+ */
+#define SW_OPT_MUX4    SW_ON
+
+#endif /* __RZG3S_SMARC_SWITCHES_H__ */
index 81b4ffd..5e044a4 100644 (file)
@@ -12,6 +12,8 @@
 / {
        aliases {
                i2c0 = &i2c0;
+               serial0 = &scif1;
+               serial1 = &scif3;
                serial3 = &scif0;
                mmc1 = &sdhi1;
        };
                         <RZG2L_PORT_PINMUX(6, 4, 1)>; /* TXD */
        };
 
+       scif3_pins: scif3 {
+               pinmux = <RZG2L_PORT_PINMUX(17, 2, 7)>, /* RXD */
+                        <RZG2L_PORT_PINMUX(17, 3, 7)>; /* TXD */
+       };
+
        sdhi1_pins: sd1 {
                data {
                        pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3";
        status = "okay";
 };
 
+&scif3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&scif3_pins>;
+       status = "okay";
+};
+
 &sdhi1 {
        pinctrl-0 = <&sdhi1_pins>;
        pinctrl-1 = <&sdhi1_pins_uhs>;
index 06c7e97..68971c8 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 8ae6af1..4caa028 100644 (file)
@@ -15,7 +15,9 @@
  *     (D) CPU3 (2ch)  --/                        (TDM-1 : 2,3ch)
  *     (E) CPU4 (2ch)  --/                        (TDM-2 : 4,5ch)
  *     (F) CPU5 (2ch)  --/                        (TDM-3 : 6,7ch)
- *     (G) CPU6 (6ch) <----  (6ch) (Z) PCM3168A-c
+ *     (G) CPU6 (2ch) <----  (6ch) (Z) PCM3168A-c (TDM-a: 0,1ch)
+ *     (H) CPU7 (2ch) <--/                        (TDM-b: 2,3ch)
+ *     (I) CPU8 (2ch) <--/                        (TDM-c: 4,5ch)
  *
  *     (A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
  *     (B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
@@ -25,7 +27,9 @@
  *     (F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
  *
  *     (A) arecord -D plughw:0,0 xxx.wav
- *     (G) arecord -D plughw:1,4 xxx.wav
+ *     (G) arecord -D plughw:1,4 xxx.wav (TDM-a)
+ *     (H) arecord -D plughw:1,5 xxx.wav (TDM-b)
+ *     (I) arecord -D plughw:1,6 xxx.wav (TDM-c)
  */
 / {
        sound_card_kf: expand-sound {
                routing = "pcm3168a Playback", "DAI2 Playback",
                          "pcm3168a Playback", "DAI3 Playback",
                          "pcm3168a Playback", "DAI4 Playback",
-                         "pcm3168a Playback", "DAI5 Playback";
+                         "pcm3168a Playback", "DAI5 Playback",
+                         "DAI6 Capture", "pcm3168a Capture",
+                         "DAI7 Capture", "pcm3168a Capture",
+                         "DAI8 Capture", "pcm3168a Capture";
 
                dais = <&snd_kf1 /* (C) CPU2 */
                        &snd_kf2 /* (D) CPU3 */
                        &snd_kf3 /* (E) CPU4 */
                        &snd_kf4 /* (F) CPU5 */
-                       &snd_kf5 /* (G) GPU6 */
+                       &snd_kf5 /* (G) CPU6 */
+                       &snd_kf6 /* (H) CPU7 */
+                       &snd_kf7 /* (I) CPU8 */
                >;
        };
 };
@@ -50,7 +59,9 @@
        ports {
                #address-cells = <1>;
                #size-cells = <0>;
+
                mclk-fs = <512>;
+               prefix = "pcm3168a";
 
                /*
                 * (Y) PCM3168A-p
@@ -59,7 +70,6 @@
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0>;
-                       prefix = "pcm3168a";
                        convert-channels = <8>; /* to 8ch TDM */
 
                        /* (C) CPU2 -> (Y) PCM3168A-p */
                 * (Z) PCM3168A-c
                 */
                port@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
                        reg = <1>;
+
+                       convert-channels = <6>; /* to 6ch TDM */
+
                        /* (G) CPU6 <- PCM3168A-c */
-                       pcm3168a_endpoint_c: endpoint {
-                               remote-endpoint = <&rsnd_for_pcm3168a_capture>;
+                       pcm3168a_endpoint_c1: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&rsnd_for_pcm3168a_capture1>;
+                               clocks = <&clksndsel>;
+                       };
+                       /* (H) CPU7 <- PCM3168A-c */
+                       pcm3168a_endpoint_c2: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&rsnd_for_pcm3168a_capture2>;
+                               clocks = <&clksndsel>;
+                       };
+                       /* (I) CPU8 <- PCM3168A-c */
+                       pcm3168a_endpoint_c3: endpoint@2 {
+                               reg = <2>;
+                               remote-endpoint = <&rsnd_for_pcm3168a_capture3>;
                                clocks = <&clksndsel>;
                        };
                };
                 */
                snd_kf5: port@6 {
                        reg = <6>;
-                       rsnd_for_pcm3168a_capture: endpoint {
-                               remote-endpoint = <&pcm3168a_endpoint_c>;
+                       rsnd_for_pcm3168a_capture1: endpoint {
+                               remote-endpoint = <&pcm3168a_endpoint_c1>;
+                               bitclock-master;
+                               frame-master;
+                               capture = <&ssiu40 &ssi4>;
+                       };
+               };
+               /*
+                * (H) CPU7
+                */
+               snd_kf6: port@7 {
+                       reg = <7>;
+                       rsnd_for_pcm3168a_capture2: endpoint {
+                               remote-endpoint = <&pcm3168a_endpoint_c2>;
+                               bitclock-master;
+                               frame-master;
+                               capture = <&ssiu41 &ssi4>;
+                       };
+               };
+               /*
+                * (I) CPU8
+                */
+               snd_kf7: port@8 {
+                       reg = <8>;
+                       rsnd_for_pcm3168a_capture3: endpoint {
+                               remote-endpoint = <&pcm3168a_endpoint_c3>;
                                bitclock-master;
                                frame-master;
-                               dai-tdm-slot-num = <6>;
-                               capture  = <&ssi4>;
+                               capture = <&ssiu42 &ssi4>;
                        };
                };
        };
index 4cf632b..67a0057 100644 (file)
@@ -15,7 +15,9 @@
  *     (D) CPU2 (2ch)  --/                        (TDM-1 : 2,3ch)
  *     (E) CPU4 (2ch)  --/                        (TDM-2 : 4,5ch)
  *     (F) CPU5 (2ch)  --/                        (TDM-3 : 6,7ch)
- *     (G) CPU6 (6ch) <----  (6ch) (Z) PCM3168A-c
+ *     (G) CPU6 (2ch) <----  (6ch) (Z) PCM3168A-c (TDM-a: 0,1ch)
+ *     (H) CPU7 (2ch) <--/                        (TDM-b: 2,3ch)
+ *     (I) CPU8 (2ch) <--/                        (TDM-c: 4,5ch)
  *
  *     (A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
  *     (B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
@@ -25,7 +27,9 @@
  *     (F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
  *
  *     (A) arecord -D plughw:0,0 xxx.wav
- *     (G) arecord -D plughw:1,4 xxx.wav
+ *     (G) arecord -D plughw:1,4 xxx.wav (TDM-a)
+ *     (H) arecord -D plughw:1,5 xxx.wav (TDM-b)
+ *     (I) arecord -D plughw:1,6 xxx.wav (TDM-c)
  */
 / {
        sound_card_kf: expand-sound {
                          "pcm3168a Playback", "DAI3 Playback",
                          "pcm3168a Playback", "DAI4 Playback",
                          "pcm3168a Playback", "DAI5 Playback",
-                         "DAI6 Capture",      "pcm3168a Capture";
+                         "DAI6 Capture",      "pcm3168a Capture",
+                         "DAI7 Capture",      "pcm3168a Capture",
+                         "DAI8 Capture",      "pcm3168a Capture";
 
                links = <&fe_c          /* (C) CPU2       */
                         &fe_d          /* (D) CPU3       */
                         &fe_e          /* (E) CPU4       */
                         &fe_f          /* (F) CPU5       */
-                        &rsnd_g        /* (G) CPU6       */
+                        &fe_g          /* (G) CPU6       */
+                        &fe_h          /* (H) CPU7       */
+                        &fe_i          /* (I) CPU8       */
                         &be_y          /* (Y) PCM3168A-p */
+                        &be_z          /* (Z) PCM3168A-c */
                >;
 
-               dpcm {
+               dpcm: dpcm {
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       non-supplier;
 
                        ports@0 {
                                #address-cells = <1>;
                                 * (D) CPU3
                                 * (E) CPU4
                                 * (F) CPU5
+                                * (G) CPU6
+                                * (H) CPU7
+                                * (I) CPU8
                                 */
                        fe_c:   port@2 { reg = <2>; fe_c_ep: endpoint { remote-endpoint = <&rsnd_c_ep>; }; };
                        fe_d:   port@3 { reg = <3>; fe_d_ep: endpoint { remote-endpoint = <&rsnd_d_ep>; }; };
                        fe_e:   port@4 { reg = <4>; fe_e_ep: endpoint { remote-endpoint = <&rsnd_e_ep>; }; };
                        fe_f:   port@5 { reg = <5>; fe_f_ep: endpoint { remote-endpoint = <&rsnd_f_ep>; }; };
+
+                       fe_g:   port@6 { reg = <6>; fe_g_ep: endpoint { remote-endpoint = <&rsnd_g_ep>; }; };
+                       fe_h:   port@7 { reg = <7>; fe_h_ep: endpoint { remote-endpoint = <&rsnd_h_ep>; }; };
+                       fe_i:   port@8 { reg = <8>; fe_i_ep: endpoint { remote-endpoint = <&rsnd_i_ep>; }; };
                        };
 
                        ports@1 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                reg = <1>;
                                /*
                                 * BE
                                 *
                                 * (Y) PCM3168A-p
+                                * (Z) PCM3168A-c
                                 */
-                       be_y:   port { be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; };
+                       be_y:   port@0 { reg = <0>; be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; };
+                       be_z:   port@1 { reg = <1>; be_z_ep: endpoint { remote-endpoint = <&pcm3168a_z_ep>; }; };
                        };
                };
        };
                 */
                port@1 {
                        reg = <1>;
+                       convert-channels = <6>; /* to 6ch TDM */
                        pcm3168a_z_ep: endpoint {
-                               remote-endpoint = <&rsnd_g_ep>;
+                               remote-endpoint = <&be_z_ep>;
                                clocks = <&clksndsel>;
                        };
                };
                /*
                 * (G) CPU6
                 */
-               rsnd_g: port@6 {
+               port@6 {
                        reg = <6>;
                        rsnd_g_ep: endpoint {
-                               remote-endpoint = <&pcm3168a_z_ep>;
+                               remote-endpoint = <&fe_g_ep>;
+                               bitclock-master;
+                               frame-master;
+                               capture = <&ssiu40 &ssi4>;
+                       };
+               };
+               /*
+                * (H) CPU7
+                */
+               port@7 {
+                       reg = <7>;
+                       rsnd_h_ep: endpoint {
+                               remote-endpoint = <&fe_h_ep>;
+                               bitclock-master;
+                               frame-master;
+                               capture = <&ssiu41 &ssi4>;
+                       };
+               };
+               /*
+                * (I) CPU8
+                */
+               port@8 {
+                       reg = <8>;
+                       rsnd_i_ep: endpoint {
+                               remote-endpoint = <&fe_i_ep>;
                                bitclock-master;
                                frame-master;
-                               capture = <&ssi4>;
+                               capture = <&ssiu42 &ssi4>;
                        };
                };
        };
index f01d91a..fd75801 100644 (file)
@@ -15,7 +15,9 @@
  *     (D) CPU2 (2ch)  --/                        (TDM-1 : 2,3ch)
  *     (E) CPU4 (2ch)  --/                        (TDM-2 : 4,5ch)
  *     (F) CPU5 (2ch)  --/                        (TDM-3 : 6,7ch)
- *     (G) CPU6 (6ch) <----  (6ch) (Z) PCM3168A-c
+ *     (G) CPU6 (2ch) <----  (6ch) (Z) PCM3168A-c (TDM-a: 0,1ch)
+ *     (H) CPU7 (2ch) <--/                        (TDM-b: 2,3ch)
+ *     (I) CPU8 (2ch) <--/                        (TDM-c: 4,5ch)
  *
  *     (A) aplay   -D plughw:0,0 xxx.wav (MIX-0)
  *     (B) aplay   -D plughw:0,1 xxx.wav (MIX-1)
@@ -25,7 +27,9 @@
  *     (F) aplay   -D plughw:1,3 xxx.wav (TDM-3)
  *
  *     (A) arecord -D plughw:0,0 xxx.wav
- *     (G) arecord -D plughw:1,4 xxx.wav
+ *     (G) arecord -D plughw:1,4 xxx.wav (TDM-a)
+ *     (H) arecord -D plughw:1,5 xxx.wav (TDM-b)
+ *     (I) arecord -D plughw:1,6 xxx.wav (TDM-c)
  */
 
 / {
                simple-audio-card,routing = "pcm3168a Playback", "DAI2 Playback",
                                            "pcm3168a Playback", "DAI3 Playback",
                                            "pcm3168a Playback", "DAI4 Playback",
-                                           "pcm3168a Playback", "DAI5 Playback";
+                                           "pcm3168a Playback", "DAI5 Playback",
+                                           "DAI6 Capture",      "pcm3168a Capture",
+                                           "DAI7 Capture",      "pcm3168a Capture",
+                                           "DAI8 Capture",      "pcm3168a Capture";
 
                simple-audio-card,dai-link@0 {
                        #address-cells = <1>;
                };
 
                simple-audio-card,dai-link@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
                        reg = <1>;
+                       convert-channels = <6>; /* to 6ch TDM */
+
                        /*
                         * (G) CPU6
                         */
-                       cpu {
+                       cpu@0 {
+                               reg = <0>;
                                bitclock-master;
                                frame-master;
                                sound-dai = <&rcar_sound 6>;
                        };
+                       /*
+                        * (H) CPU7
+                        */
+                       cpu@1 {
+                               reg = <1>;
+                               bitclock-master;
+                               frame-master;
+                               sound-dai = <&rcar_sound 7>;
+                       };
+                       /*
+                        * (I) CPU8
+                        */
+                       cpu@2 {
+                               reg = <2>;
+                               bitclock-master;
+                               frame-master;
+                               sound-dai = <&rcar_sound 8>;
+                       };
+
                        /*
                         * (Z) PCM3168A-c
                         */
                 * (G) CPU6
                 */
                dai6 {
-                       capture = <&ssi4>;
+                       capture = <&ssiu40 &ssi4>;
+               };
+               /*
+                * (H) CPU7
+                */
+               dai7 {
+                       capture = <&ssiu41 &ssi4>;
+               };
+               /*
+                * (I) CPU8
+                */
+               dai8 {
+                       capture = <&ssiu42 &ssi4>;
                };
        };
 };
index 0c58d81..fcab957 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index f24814d..b4024e8 100644 (file)
 &hscif0 {
        pinctrl-0 = <&hscif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 9017c44..a5d1c10 100644 (file)
@@ -21,7 +21,9 @@
                                bus-type = <MEDIA_BUS_TYPE_CSI2_CPHY>;
                                clock-lanes = <0>;
                                data-lanes = <1 2 3>;
-                               line-orders = <0 3 0>;
+                               line-orders = <MEDIA_BUS_CSI2_CPHY_LINE_ORDER_ABC
+                                              MEDIA_BUS_CSI2_CPHY_LINE_ORDER_BCA
+                                              MEDIA_BUS_CSI2_CPHY_LINE_ORDER_ABC>;
                                remote-endpoint = <&max96712_out0>;
                        };
                };
@@ -42,7 +44,9 @@
                                bus-type = <MEDIA_BUS_TYPE_CSI2_CPHY>;
                                clock-lanes = <0>;
                                data-lanes = <1 2 3>;
-                               line-orders = <0 3 0>;
+                               line-orders = <MEDIA_BUS_CSI2_CPHY_LINE_ORDER_ABC
+                                              MEDIA_BUS_CSI2_CPHY_LINE_ORDER_BCA
+                                              MEDIA_BUS_CSI2_CPHY_LINE_ORDER_ABC>;
                                remote-endpoint = <&max96712_out1>;
                        };
                };
index 1edfd64..a334ef0 100644 (file)
@@ -31,7 +31,7 @@
        };
 
        vcc3v3_btreg: vcc3v3-btreg {
-               compatible = "regulator-gpio";
+               compatible = "regulator-fixed";
                enable-active-high;
                pinctrl-names = "default";
                pinctrl-0 = <&bt_enable_h>;
@@ -39,7 +39,6 @@
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
                regulator-always-on;
-               states = <3300000 0x0>;
        };
 
        vcc3v3_rf_aux_mod: regulator-vcc3v3-rf-aux-mod {
index 80db778..b60e68f 100644 (file)
@@ -26,5 +26,5 @@
 };
 
 &vcc3v3_btreg {
-       enable-gpios = <&gpio1 RK_PC3 GPIO_ACTIVE_HIGH>;
+       gpios = <&gpio1 RK_PC3 GPIO_ACTIVE_HIGH>;
 };
index 165d09c..5886b80 100644 (file)
@@ -39,5 +39,5 @@
 };
 
 &vcc3v3_btreg {
-       enable-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_HIGH>;
+       gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_HIGH>;
 };
diff --git a/src/arm64/rockchip/px30-ringneck-haikou-lvds-9904379.dtso b/src/arm64/rockchip/px30-ringneck-haikou-lvds-9904379.dtso
new file mode 100644 (file)
index 0000000..3fc088a
--- /dev/null
@@ -0,0 +1,130 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Cherry Embedded Solutions GmbH
+ *
+ * HAIKOU-LVDS-9904379 adapter for PX30 Ringneck and Haikou carrierboard.
+ *
+ * This adapter needs to be plugged in the fake PCIe connector called Video
+ * Connector on Haikou carrierboard.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+
+&{/} {
+       backlight_lvds: backlight-lvds {
+               compatible = "pwm-backlight";
+               brightness-levels = <0 255>;
+               default-brightness-level = <255>;
+               num-interpolated-steps = <255>;
+               power-supply = <&vcc3v3_baseboard>;
+               pwms = <&pwm0 0 25000 0>;
+       };
+
+       panel {
+               compatible = "admatec,9904379", "panel-lvds";
+               backlight = <&backlight_lvds>;
+               data-mapping = "vesa-24";
+               height-mm = <126>;
+               power-supply = <&vcc3v3_baseboard>;
+               width-mm = <224>;
+
+               panel-timing {
+                       clock-frequency = <49500000>;
+                       hactive = <1024>;
+                       hback-porch = <90>;
+                       hfront-porch = <90>;
+                       hsync-len = <90>;
+                       vactive = <600>;
+                       vback-porch = <10>;
+                       vfront-porch = <10>;
+                       vsync-len = <10>;
+               };
+
+               port {
+                       panel_in_lvds: endpoint {
+                               remote-endpoint = <&lvds_out_panel>;
+                       };
+               };
+       };
+};
+
+&display_subsystem {
+       status = "okay";
+};
+
+&dsi_dphy {
+       status = "okay";
+};
+
+&i2c1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       /* EEPROM and GT928 are limited to 400KHz */
+       clock-frequency = <400000>;
+
+       touchscreen@14 {
+               compatible = "goodix,gt928";
+               reg = <0x14>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA0 IRQ_TYPE_LEVEL_LOW>;
+               irq-gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&touch_int &touch_rst>;
+               pinctrl-names = "default";
+               touchscreen-inverted-x;
+               touchscreen-inverted-y;
+               AVDD28-supply = <&vcc3v3_baseboard>;
+               VDDIO-supply = <&vcc3v3_baseboard>;
+       };
+
+       eeprom@54 {
+               reg = <0x54>;
+               compatible = "st,24c04", "atmel,24c04";
+               pagesize = <16>;
+               size = <512>;
+               vcc-supply = <&vcc3v3_baseboard>;
+       };
+};
+
+&lvds {
+       status = "okay";
+};
+
+&lvds_out {
+       lvds_out_panel: endpoint {
+               remote-endpoint = <&panel_in_lvds>;
+       };
+};
+
+&pinctrl {
+       touch {
+               touch_int: touch-int {
+                       rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               touch_rst: touch-rst {
+                       rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&vopl {
+       status = "okay";
+};
+
+&vopl_mmu {
+       status = "okay";
+};
diff --git a/src/arm64/rockchip/px30-ringneck-haikou-video-demo.dtso b/src/arm64/rockchip/px30-ringneck-haikou-video-demo.dtso
new file mode 100644 (file)
index 0000000..7d9ea5a
--- /dev/null
@@ -0,0 +1,190 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 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 Ringneck system-on-module.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/clock/px30-cru.h>
+#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>
+
+&{/} {
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               power-supply = <&dc_12v>;
+               pwms = <&pwm0 0 25000 0>;
+       };
+
+       cam_afvdd_2v8: regulator-cam-afvdd-2v8 {
+               compatible  = "regulator-fixed";
+               gpio = <&pca9670 2 GPIO_ACTIVE_LOW>;
+               regulator-max-microvolt = <2800000>;
+               regulator-min-microvolt = <2800000>;
+               regulator-name = "cam-afvdd-2v8";
+               vin-supply = <&vcc2v8_video>;
+       };
+
+       cam_avdd_2v8: regulator-cam-avdd-2v8 {
+               compatible  = "regulator-fixed";
+               gpio = <&pca9670 4 GPIO_ACTIVE_LOW>;
+               regulator-max-microvolt = <2800000>;
+               regulator-min-microvolt = <2800000>;
+               regulator-name = "cam-avdd-2v8";
+               vin-supply = <&vcc2v8_video>;
+       };
+
+       cam_dovdd_1v8: regulator-cam-dovdd-1v8 {
+               compatible  = "regulator-fixed";
+               gpio = <&pca9670 3 GPIO_ACTIVE_LOW>;
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "cam-dovdd-1v8";
+               vin-supply = <&vcc1v8_video>;
+       };
+
+       cam_dvdd_1v2: regulator-cam-dvdd-1v2 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&pca9670 5 GPIO_ACTIVE_HIGH>;
+               regulator-max-microvolt = <1200000>;
+               regulator-min-microvolt = <1200000>;
+               regulator-name = "cam-dvdd-1v2";
+               vin-supply = <&vcc3v3_baseboard>;
+       };
+
+       vcc1v8_video: regulator-vcc1v8-video {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "vcc1v8-video";
+               vin-supply = <&vcc3v3_baseboard>;
+       };
+
+       vcc2v8_video: regulator-vcc2v8-video {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <2800000>;
+               regulator-min-microvolt = <2800000>;
+               regulator-name = "vcc2v8-video";
+               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";
+               };
+       };
+};
+
+&display_subsystem {
+       status = "okay";
+};
+
+&dsi {
+       #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_in_panel: endpoint {
+                               remote-endpoint = <&mipi_out_panel>;
+                       };
+               };
+       };
+};
+
+&dsi_dphy {
+       status = "okay";
+};
+
+&dsi_out {
+       mipi_out_panel: endpoint {
+               remote-endpoint = <&mipi_in_panel>;
+       };
+};
+
+&i2c1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       /* OV5675, GT911, DW9714 are limited to 400KHz */
+       clock-frequency = <400000>;
+
+       touchscreen@14 {
+               compatible = "goodix,gt911";
+               reg = <0x14>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA0 IRQ_TYPE_LEVEL_LOW>;
+               irq-gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&touch_int>;
+               pinctrl-names = "default";
+               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-0 = <&pca9670_resetn>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&pinctrl {
+       pca9670 {
+               pca9670_resetn: pca9670-resetn {
+                       rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       touch {
+               touch_int: touch-int {
+                       rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&vopl {
+       status = "okay";
+};
+
+&vopl_mmu {
+       status = "okay";
+};
index 1a59e8b..91cf4cd 100644 (file)
 };
 
 &i2c3 {
+       status = "okay";
+
        eeprom@50 {
                reg = <0x50>;
                compatible = "atmel,24c01";
index e80412a..142244d 100644 (file)
        };
 };
 
-&i2c3 {
-       status = "okay";
-};
-
 &i2s0_8ch {
        rockchip,trcm-sync-tx-only;
 
index 629121d..5e71819 100644 (file)
 
 &pwm5 {
        status = "okay";
-       pinctrl-names = "active";
+       pinctrl-names = "default";
        pinctrl-0 = <&pwm5_pin_pull_down>;
 };
 
index a94114f..96c27fc 100644 (file)
 
 &pwm0 {
        pinctrl-0 = <&pwm0_pin_pull_up>;
-       pinctrl-names = "active";
+       pinctrl-names = "default";
        status = "okay";
 };
 
 &pwm1 {
        pinctrl-0 = <&pwm1_pin_pull_up>;
-       pinctrl-names = "active";
+       pinctrl-names = "default";
        status = "okay";
 };
 
index 6310b58..a4bdd87 100644 (file)
        status = "okay";
 };
 
+&u2phy_otg {
+       status = "okay";
+};
+
 &uart2 {
        status = "okay";
 };
 
+&usb20_otg {
+       status = "okay";
+};
+
 &usbdrd3 {
        dr_mode = "host";
        status = "okay";
index b169be0..c8eb548 100644 (file)
 };
 
 &pwm2 {
-       pinctrl-names = "active";
+       pinctrl-names = "default";
        pinctrl-0 = <&pwm2_pin_pull_down>;
        status = "okay";
 };
diff --git a/src/arm64/rockchip/rk3399-puma-haikou-video-demo.dtso b/src/arm64/rockchip/rk3399-puma-haikou-video-demo.dtso
new file mode 100644 (file)
index 0000000..0377ec8
--- /dev/null
@@ -0,0 +1,166 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 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 Puma system-on-module.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/clock/rk3399-cru.h>
+#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>
+
+&{/} {
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               power-supply = <&dc_12v>;
+               pwms = <&pwm0 0 25000 0>;
+       };
+
+       cam_afvdd_2v8: regulator-cam-afvdd-2v8 {
+               compatible  = "regulator-fixed";
+               gpio = <&pca9670 2 GPIO_ACTIVE_LOW>;
+               regulator-max-microvolt = <2800000>;
+               regulator-min-microvolt = <2800000>;
+               regulator-name = "cam-afvdd-2v8";
+               vin-supply = <&vcc2v8_video>;
+       };
+
+       cam_avdd_2v8: regulator-cam-avdd-2v8 {
+               compatible  = "regulator-fixed";
+               gpio = <&pca9670 4 GPIO_ACTIVE_LOW>;
+               regulator-max-microvolt = <2800000>;
+               regulator-min-microvolt = <2800000>;
+               regulator-name = "cam-avdd-2v8";
+               vin-supply = <&vcc2v8_video>;
+       };
+
+       cam_dovdd_1v8: regulator-cam-dovdd-1v8 {
+               compatible  = "regulator-fixed";
+               gpio = <&pca9670 3 GPIO_ACTIVE_LOW>;
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "cam-dovdd-1v8";
+               vin-supply = <&vcc1v8_video>;
+       };
+
+       cam_dvdd_1v2: regulator-cam-dvdd-1v2 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&pca9670 5 GPIO_ACTIVE_HIGH>;
+               regulator-max-microvolt = <1200000>;
+               regulator-min-microvolt = <1200000>;
+               regulator-name = "cam-dvdd-1v2";
+               vin-supply = <&vcc3v3_baseboard>;
+       };
+
+       vcc1v8_video: regulator-vcc1v8-video {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "vcc1v8-video";
+               vin-supply = <&vcc3v3_baseboard>;
+       };
+
+       vcc2v8_video: regulator-vcc2v8-video {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <2800000>;
+               regulator-min-microvolt = <2800000>;
+               regulator-name = "vcc2v8-video";
+               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";
+               };
+       };
+};
+
+&i2c1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       /* OV5675, GT911, DW9714 are limited to 400KHz */
+       clock-frequency = <400000>;
+
+       touchscreen@14 {
+               compatible = "goodix,gt911";
+               reg = <0x14>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <RK_PC7 IRQ_TYPE_LEVEL_LOW>;
+               irq-gpios = <&gpio1 RK_PC7 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&touch_int>;
+               pinctrl-names = "default";
+               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-0 = <&pca9670_resetn>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio4 RK_PD6 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&mipi_out {
+       mipi_out_panel: endpoint {
+               remote-endpoint = <&mipi_in_panel>;
+       };
+};
+
+&mipi_dsi {
+       #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_in_panel: endpoint {
+                               remote-endpoint = <&mipi_out_panel>;
+                       };
+               };
+       };
+};
+
+&pinctrl {
+       pca9670 {
+               pca9670_resetn: pca9670-resetn {
+                       rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       touch {
+               touch_int: touch-int {
+                       rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
index 947bbd6..f2234da 100644 (file)
        };
 };
 
+&gmac {
+       status = "okay";
+};
+
 &hdmi {
-       ddc-i2c-bus = <&i2c3>;
+       status = "okay";
+};
+
+&hdmi_sound {
        status = "okay";
 };
 
        };
 };
 
-&i2c6 {
+&i2c7 {
+       eeprom@50 {
+               reg = <0x50>;
+               compatible = "atmel,24c01";
+               pagesize = <8>;
+               size = <128>;
+               vcc-supply = <&vcc3v3_baseboard>;
+       };
+};
+
+&i2s0 {
+       status = "okay";
+};
+
+&i2s2 {
        status = "okay";
-       clock-frequency = <400000>;
 };
 
 &pcie_phy {
index 995b30a..e00fbaa 100644 (file)
        snps,reset-delays-us = <0 10000 50000>;
        tx_delay = <0x10>;
        rx_delay = <0x23>;
-       status = "okay";
 };
 
 &gpu {
        };
 };
 
+&hdmi {
+       ddc-i2c-bus = <&i2c3>;
+};
+
+&i2c6 {
+       clock-frequency = <400000>;
+};
+
 &i2c7 {
        status = "okay";
        clock-frequency = <400000>;
        pinctrl-1 = <&i2s0_2ch_bus_bclk_off>;
        rockchip,playback-channels = <2>;
        rockchip,capture-channels = <2>;
-       status = "okay";
 };
 
 /*
index e2e9279..8e3858c 100644 (file)
 
 &i2c1 {
        es8388: es8388@11 {
-               compatible = "everest,es8388";
+               compatible = "everest,es8388", "everest,es8328";
                reg = <0x11>;
                clocks = <&cru SCLK_I2S_8CH_OUT>;
                #sound-dai-cells = <0>;
index 541dca1..046dbe3 100644 (file)
@@ -43,7 +43,7 @@
        sdio_pwrseq: sdio-pwrseq {
                compatible = "mmc-pwrseq-simple";
                clocks = <&rk808 1>;
-               clock-names = "lpo";
+               clock-names = "ext_clock";
                pinctrl-names = "default";
                pinctrl-0 = <&wifi_enable_h>;
                reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
diff --git a/src/arm64/rockchip/rk3528-pinctrl.dtsi b/src/arm64/rockchip/rk3528-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..ea05136
--- /dev/null
@@ -0,0 +1,1397 @@
+// 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 {
+       arm {
+               /omit-if-no-ref/
+               arm_pins: arm-pins {
+                       rockchip,pins =
+                               /* arm_avs */
+                               <4 RK_PC4 3 &pcfg_pull_none>;
+               };
+       };
+
+       clk {
+               /omit-if-no-ref/
+               clkm0_32k_out: clkm0-32k-out {
+                       rockchip,pins =
+                               /* clkm0_32k_out */
+                               <3 RK_PC3 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               clkm1_32k_out: clkm1-32k-out {
+                       rockchip,pins =
+                               /* clkm1_32k_out */
+                               <1 RK_PC3 1 &pcfg_pull_none>;
+               };
+       };
+
+       emmc {
+               /omit-if-no-ref/
+               emmc_rstnout: emmc-rstnout {
+                       rockchip,pins =
+                               /* emmc_rstn */
+                               <1 RK_PD6 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               emmc_bus8: emmc-bus8 {
+                       rockchip,pins =
+                               /* emmc_d0 */
+                               <1 RK_PC4 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d1 */
+                               <1 RK_PC5 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d2 */
+                               <1 RK_PC6 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d3 */
+                               <1 RK_PC7 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d4 */
+                               <1 RK_PD0 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d5 */
+                               <1 RK_PD1 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d6 */
+                               <1 RK_PD2 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d7 */
+                               <1 RK_PD3 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               emmc_clk: emmc-clk {
+                       rockchip,pins =
+                               /* emmc_clk */
+                               <1 RK_PD5 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               emmc_cmd: emmc-cmd {
+                       rockchip,pins =
+                               /* emmc_cmd */
+                               <1 RK_PD4 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               emmc_strb: emmc-strb {
+                       rockchip,pins =
+                               /* emmc_strb */
+                               <1 RK_PD7 1 &pcfg_pull_none>;
+               };
+       };
+
+       eth {
+               /omit-if-no-ref/
+               eth_pins: eth-pins {
+                       rockchip,pins =
+                               /* eth_clk_25m_out */
+                               <3 RK_PB5 2 &pcfg_pull_none_drv_level_2>;
+               };
+       };
+
+       fephy {
+               /omit-if-no-ref/
+               fephym0_led_dpx: fephym0-led_dpx {
+                       rockchip,pins =
+                               /* fephy_led_dpx_m0 */
+                               <4 RK_PB5 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               fephym0_led_link: fephym0-led_link {
+                       rockchip,pins =
+                               /* fephy_led_link_m0 */
+                               <4 RK_PC0 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               fephym0_led_spd: fephym0-led_spd {
+                       rockchip,pins =
+                               /* fephy_led_spd_m0 */
+                               <4 RK_PB7 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               fephym1_led_dpx: fephym1-led_dpx {
+                       rockchip,pins =
+                               /* fephy_led_dpx_m1 */
+                               <2 RK_PA4 5 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               fephym1_led_link: fephym1-led_link {
+                       rockchip,pins =
+                               /* fephy_led_link_m1 */
+                               <2 RK_PA6 5 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               fephym1_led_spd: fephym1-led_spd {
+                       rockchip,pins =
+                               /* fephy_led_spd_m1 */
+                               <2 RK_PA5 5 &pcfg_pull_none>;
+               };
+       };
+
+       fspi {
+               /omit-if-no-ref/
+               fspi_pins: fspi-pins {
+                       rockchip,pins =
+                               /* fspi_clk */
+                               <1 RK_PD5 2 &pcfg_pull_none>,
+                               /* fspi_d0 */
+                               <1 RK_PC4 2 &pcfg_pull_none>,
+                               /* fspi_d1 */
+                               <1 RK_PC5 2 &pcfg_pull_none>,
+                               /* fspi_d2 */
+                               <1 RK_PC6 2 &pcfg_pull_none>,
+                               /* fspi_d3 */
+                               <1 RK_PC7 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               fspi_csn0: fspi-csn0 {
+                       rockchip,pins =
+                               /* fspi_csn0 */
+                               <1 RK_PD0 2 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               fspi_csn1: fspi-csn1 {
+                       rockchip,pins =
+                               /* fspi_csn1 */
+                               <1 RK_PD1 2 &pcfg_pull_none>;
+               };
+       };
+
+       gpu {
+               /omit-if-no-ref/
+               gpu_pins: gpu-pins {
+                       rockchip,pins =
+                               /* gpu_avs */
+                               <4 RK_PC3 3 &pcfg_pull_none>;
+               };
+       };
+
+       hdmi {
+               /omit-if-no-ref/
+               hdmi_pins: hdmi-pins {
+                       rockchip,pins =
+                               /* hdmi_tx_cec */
+                               <0 RK_PA3 1 &pcfg_pull_none>,
+                               /* hdmi_tx_hpd */
+                               <0 RK_PA2 1 &pcfg_pull_none>,
+                               /* hdmi_tx_scl */
+                               <0 RK_PA4 1 &pcfg_pull_none>,
+                               /* hdmi_tx_sda */
+                               <0 RK_PA5 1 &pcfg_pull_none>;
+               };
+       };
+
+       hsm {
+               /omit-if-no-ref/
+               hsmm0_pins: hsmm0-pins {
+                       rockchip,pins =
+                               /* hsm_clk_out_m0 */
+                               <2 RK_PA2 4 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               hsmm1_pins: hsmm1-pins {
+                       rockchip,pins =
+                               /* hsm_clk_out_m1 */
+                               <1 RK_PA4 3 &pcfg_pull_none>;
+               };
+       };
+
+       i2c0 {
+               /omit-if-no-ref/
+               i2c0m0_xfer: i2c0m0-xfer {
+                       rockchip,pins =
+                               /* i2c0_scl_m0 */
+                               <4 RK_PC4 2 &pcfg_pull_none_smt>,
+                               /* i2c0_sda_m0 */
+                               <4 RK_PC3 2 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2c0m1_xfer: i2c0m1-xfer {
+                       rockchip,pins =
+                               /* i2c0_scl_m1 */
+                               <4 RK_PA1 2 &pcfg_pull_none_smt>,
+                               /* i2c0_sda_m1 */
+                               <4 RK_PA0 2 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c1 {
+               /omit-if-no-ref/
+               i2c1m0_xfer: i2c1m0-xfer {
+                       rockchip,pins =
+                               /* i2c1_scl_m0 */
+                               <4 RK_PA3 2 &pcfg_pull_none_smt>,
+                               /* i2c1_sda_m0 */
+                               <4 RK_PA2 2 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2c1m1_xfer: i2c1m1-xfer {
+                       rockchip,pins =
+                               /* i2c1_scl_m1 */
+                               <4 RK_PC5 4 &pcfg_pull_none_smt>,
+                               /* i2c1_sda_m1 */
+                               <4 RK_PC6 4 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c2 {
+               /omit-if-no-ref/
+               i2c2m0_xfer: i2c2m0-xfer {
+                       rockchip,pins =
+                               /* i2c2_scl_m0 */
+                               <0 RK_PA4 2 &pcfg_pull_none_smt>,
+                               /* i2c2_sda_m0 */
+                               <0 RK_PA5 2 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2c2m1_xfer: i2c2m1-xfer {
+                       rockchip,pins =
+                               /* i2c2_scl_m1 */
+                               <1 RK_PA5 3 &pcfg_pull_none_smt>,
+                               /* i2c2_sda_m1 */
+                               <1 RK_PA6 3 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c3 {
+               /omit-if-no-ref/
+               i2c3m0_xfer: i2c3m0-xfer {
+                       rockchip,pins =
+                               /* i2c3_scl_m0 */
+                               <1 RK_PA0 2 &pcfg_pull_none_smt>,
+                               /* i2c3_sda_m0 */
+                               <1 RK_PA1 2 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2c3m1_xfer: i2c3m1-xfer {
+                       rockchip,pins =
+                               /* i2c3_scl_m1 */
+                               <3 RK_PC1 5 &pcfg_pull_none_smt>,
+                               /* i2c3_sda_m1 */
+                               <3 RK_PC3 5 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c4 {
+               /omit-if-no-ref/
+               i2c4_xfer: i2c4-xfer {
+                       rockchip,pins =
+                               /* i2c4_scl */
+                               <2 RK_PA0 4 &pcfg_pull_none_smt>,
+                               /* i2c4_sda */
+                               <2 RK_PA1 4 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c5 {
+               /omit-if-no-ref/
+               i2c5m0_xfer: i2c5m0-xfer {
+                       rockchip,pins =
+                               /* i2c5_scl_m0 */
+                               <1 RK_PB2 3 &pcfg_pull_none_smt>,
+                               /* i2c5_sda_m0 */
+                               <1 RK_PB3 3 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2c5m1_xfer: i2c5m1-xfer {
+                       rockchip,pins =
+                               /* i2c5_scl_m1 */
+                               <1 RK_PD2 3 &pcfg_pull_none_smt>,
+                               /* i2c5_sda_m1 */
+                               <1 RK_PD3 3 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c6 {
+               /omit-if-no-ref/
+               i2c6m0_xfer: i2c6m0-xfer {
+                       rockchip,pins =
+                               /* i2c6_scl_m0 */
+                               <3 RK_PB2 5 &pcfg_pull_none_smt>,
+                               /* i2c6_sda_m0 */
+                               <3 RK_PB3 5 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2c6m1_xfer: i2c6m1-xfer {
+                       rockchip,pins =
+                               /* i2c6_scl_m1 */
+                               <1 RK_PD4 3 &pcfg_pull_none_smt>,
+                               /* i2c6_sda_m1 */
+                               <1 RK_PD7 3 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c7 {
+               /omit-if-no-ref/
+               i2c7_xfer: i2c7-xfer {
+                       rockchip,pins =
+                               /* i2c7_scl */
+                               <2 RK_PA5 4 &pcfg_pull_none_smt>,
+                               /* i2c7_sda */
+                               <2 RK_PA6 4 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2s0 {
+               /omit-if-no-ref/
+               i2s0m0_lrck: i2s0m0-lrck {
+                       rockchip,pins =
+                               /* i2s0_lrck_m0 */
+                               <3 RK_PB6 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_mclk: i2s0m0-mclk {
+                       rockchip,pins =
+                               /* i2s0_mclk_m0 */
+                               <3 RK_PB4 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_sclk: i2s0m0-sclk {
+                       rockchip,pins =
+                               /* i2s0_sclk_m0 */
+                               <3 RK_PB5 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_sdi: i2s0m0-sdi {
+                       rockchip,pins =
+                               /* i2s0m0_sdi */
+                               <3 RK_PB7 1 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               i2s0m0_sdo: i2s0m0-sdo {
+                       rockchip,pins =
+                               /* i2s0m0_sdo */
+                               <3 RK_PC0 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_lrck: i2s0m1-lrck {
+                       rockchip,pins =
+                               /* i2s0_lrck_m1 */
+                               <1 RK_PB6 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_mclk: i2s0m1-mclk {
+                       rockchip,pins =
+                               /* i2s0_mclk_m1 */
+                               <1 RK_PB4 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_sclk: i2s0m1-sclk {
+                       rockchip,pins =
+                               /* i2s0_sclk_m1 */
+                               <1 RK_PB5 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_sdi: i2s0m1-sdi {
+                       rockchip,pins =
+                               /* i2s0m1_sdi */
+                               <1 RK_PB7 1 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               i2s0m1_sdo: i2s0m1-sdo {
+                       rockchip,pins =
+                               /* i2s0m1_sdo */
+                               <1 RK_PC0 1 &pcfg_pull_none>;
+               };
+       };
+
+       i2s1 {
+               /omit-if-no-ref/
+               i2s1_lrck: i2s1-lrck {
+                       rockchip,pins =
+                               /* i2s1_lrck */
+                               <4 RK_PA6 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s1_mclk: i2s1-mclk {
+                       rockchip,pins =
+                               /* i2s1_mclk */
+                               <4 RK_PA4 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s1_sclk: i2s1-sclk {
+                       rockchip,pins =
+                               /* i2s1_sclk */
+                               <4 RK_PA5 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s1_sdi0: i2s1-sdi0 {
+                       rockchip,pins =
+                               /* i2s1_sdi0 */
+                               <4 RK_PB4 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1_sdi1: i2s1-sdi1 {
+                       rockchip,pins =
+                               /* i2s1_sdi1 */
+                               <4 RK_PB3 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1_sdi2: i2s1-sdi2 {
+                       rockchip,pins =
+                               /* i2s1_sdi2 */
+                               <4 RK_PA3 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1_sdi3: i2s1-sdi3 {
+                       rockchip,pins =
+                               /* i2s1_sdi3 */
+                               <4 RK_PA2 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1_sdo0: i2s1-sdo0 {
+                       rockchip,pins =
+                               /* i2s1_sdo0 */
+                               <4 RK_PA7 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1_sdo1: i2s1-sdo1 {
+                       rockchip,pins =
+                               /* i2s1_sdo1 */
+                               <4 RK_PB0 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1_sdo2: i2s1-sdo2 {
+                       rockchip,pins =
+                               /* i2s1_sdo2 */
+                               <4 RK_PB1 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1_sdo3: i2s1-sdo3 {
+                       rockchip,pins =
+                               /* i2s1_sdo3 */
+                               <4 RK_PB2 1 &pcfg_pull_none>;
+               };
+       };
+
+       jtag {
+               /omit-if-no-ref/
+               jtagm0_pins: jtagm0-pins {
+                       rockchip,pins =
+                               /* jtag_cpu_tck_m0 */
+                               <2 RK_PA2 2 &pcfg_pull_none>,
+                               /* jtag_cpu_tms_m0 */
+                               <2 RK_PA3 2 &pcfg_pull_none>,
+                               /* jtag_mcu_tck_m0 */
+                               <2 RK_PA4 2 &pcfg_pull_none>,
+                               /* jtag_mcu_tms_m0 */
+                               <2 RK_PA5 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               jtagm1_pins: jtagm1-pins {
+                       rockchip,pins =
+                               /* jtag_cpu_tck_m1 */
+                               <4 RK_PD0 2 &pcfg_pull_none>,
+                               /* jtag_cpu_tms_m1 */
+                               <4 RK_PC7 2 &pcfg_pull_none>,
+                               /* jtag_mcu_tck_m1 */
+                               <4 RK_PD0 3 &pcfg_pull_none>,
+                               /* jtag_mcu_tms_m1 */
+                               <4 RK_PC7 3 &pcfg_pull_none>;
+               };
+       };
+
+       pcie {
+               /omit-if-no-ref/
+               pciem0_pins: pciem0-pins {
+                       rockchip,pins =
+                               /* pcie_clkreqn_m0 */
+                               <3 RK_PA6 5 &pcfg_pull_none>,
+                               /* pcie_perstn_m0 */
+                               <3 RK_PB0 5 &pcfg_pull_none>,
+                               /* pcie_waken_m0 */
+                               <3 RK_PA7 5 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pciem1_pins: pciem1-pins {
+                       rockchip,pins =
+                               /* pcie_clkreqn_m1 */
+                               <1 RK_PA0 4 &pcfg_pull_none>,
+                               /* pcie_perstn_m1 */
+                               <1 RK_PA2 4 &pcfg_pull_none>,
+                               /* pcie_waken_m1 */
+                               <1 RK_PA1 4 &pcfg_pull_none>;
+               };
+       };
+
+       pdm {
+               /omit-if-no-ref/
+               pdm_clk0: pdm-clk0 {
+                       rockchip,pins =
+                               /* pdm_clk0 */
+                               <4 RK_PB5 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdm_clk1: pdm-clk1 {
+                       rockchip,pins =
+                               /* pdm_clk1 */
+                               <4 RK_PA4 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdm_sdi0: pdm-sdi0 {
+                       rockchip,pins =
+                               /* pdm_sdi0 */
+                               <4 RK_PB2 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdm_sdi1: pdm-sdi1 {
+                       rockchip,pins =
+                               /* pdm_sdi1 */
+                               <4 RK_PB1 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdm_sdi2: pdm-sdi2 {
+                       rockchip,pins =
+                               /* pdm_sdi2 */
+                               <4 RK_PB3 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdm_sdi3: pdm-sdi3 {
+                       rockchip,pins =
+                               /* pdm_sdi3 */
+                               <4 RK_PC1 3 &pcfg_pull_none>;
+               };
+       };
+
+       pmu {
+               /omit-if-no-ref/
+               pmu_pins: pmu-pins {
+                       rockchip,pins =
+                               /* pmu_debug */
+                               <4 RK_PA0 4 &pcfg_pull_none>;
+               };
+       };
+
+       pwm0 {
+               /omit-if-no-ref/
+               pwm0m0_pins: pwm0m0-pins {
+                       rockchip,pins =
+                               /* pwm0_m0 */
+                               <4 RK_PC3 1 &pcfg_pull_none_drv_level_0>;
+               };
+
+               /omit-if-no-ref/
+               pwm0m1_pins: pwm0m1-pins {
+                       rockchip,pins =
+                               /* pwm0_m1 */
+                               <1 RK_PA2 5 &pcfg_pull_none_drv_level_0>;
+               };
+       };
+
+       pwm1 {
+               /omit-if-no-ref/
+               pwm1m0_pins: pwm1m0-pins {
+                       rockchip,pins =
+                               /* pwm1_m0 */
+                               <4 RK_PC4 1 &pcfg_pull_none_drv_level_0>;
+               };
+
+               /omit-if-no-ref/
+               pwm1m1_pins: pwm1m1-pins {
+                       rockchip,pins =
+                               /* pwm1_m1 */
+                               <1 RK_PA3 4 &pcfg_pull_none_drv_level_0>;
+               };
+       };
+
+       pwm2 {
+               /omit-if-no-ref/
+               pwm2m0_pins: pwm2m0-pins {
+                       rockchip,pins =
+                               /* pwm2_m0 */
+                               <4 RK_PC5 1 &pcfg_pull_none_drv_level_0>;
+               };
+
+               /omit-if-no-ref/
+               pwm2m1_pins: pwm2m1-pins {
+                       rockchip,pins =
+                               /* pwm2_m1 */
+                               <1 RK_PA7 2 &pcfg_pull_none_drv_level_0>;
+               };
+       };
+
+       pwm3 {
+               /omit-if-no-ref/
+               pwm3m0_pins: pwm3m0-pins {
+                       rockchip,pins =
+                               /* pwm3_m0 */
+                               <4 RK_PC6 1 &pcfg_pull_none_drv_level_0>;
+               };
+
+               /omit-if-no-ref/
+               pwm3m1_pins: pwm3m1-pins {
+                       rockchip,pins =
+                               /* pwm3_m1 */
+                               <2 RK_PA4 3 &pcfg_pull_none_drv_level_0>;
+               };
+       };
+
+       pwm4 {
+               /omit-if-no-ref/
+               pwm4m0_pins: pwm4m0-pins {
+                       rockchip,pins =
+                               /* pwm4_m0 */
+                               <4 RK_PB7 1 &pcfg_pull_none_drv_level_0>;
+               };
+
+               /omit-if-no-ref/
+               pwm4m1_pins: pwm4m1-pins {
+                       rockchip,pins =
+                               /* pwm4_m1 */
+                               <1 RK_PA4 2 &pcfg_pull_none_drv_level_0>;
+               };
+       };
+
+       pwm5 {
+               /omit-if-no-ref/
+               pwm5m0_pins: pwm5m0-pins {
+                       rockchip,pins =
+                               /* pwm5_m0 */
+                               <4 RK_PC0 1 &pcfg_pull_none_drv_level_0>;
+               };
+
+               /omit-if-no-ref/
+               pwm5m1_pins: pwm5m1-pins {
+                       rockchip,pins =
+                               /* pwm5_m1 */
+                               <3 RK_PC3 1 &pcfg_pull_none_drv_level_0>;
+               };
+       };
+
+       pwm6 {
+               /omit-if-no-ref/
+               pwm6m0_pins: pwm6m0-pins {
+                       rockchip,pins =
+                               /* pwm6_m0 */
+                               <4 RK_PC1 1 &pcfg_pull_none_drv_level_0>;
+               };
+
+               /omit-if-no-ref/
+               pwm6m1_pins: pwm6m1-pins {
+                       rockchip,pins =
+                               /* pwm6_m1 */
+                               <1 RK_PC3 3 &pcfg_pull_none_drv_level_0>;
+               };
+
+               /omit-if-no-ref/
+               pwm6m2_pins: pwm6m2-pins {
+                       rockchip,pins =
+                               /* pwm6_m2 */
+                               <3 RK_PC1 1 &pcfg_pull_none_drv_level_0>;
+               };
+       };
+
+       pwm7 {
+               /omit-if-no-ref/
+               pwm7m0_pins: pwm7m0-pins {
+                       rockchip,pins =
+                               /* pwm7_m0 */
+                               <4 RK_PC2 1 &pcfg_pull_none_drv_level_0>;
+               };
+
+               /omit-if-no-ref/
+               pwm7m1_pins: pwm7m1-pins {
+                       rockchip,pins =
+                               /* pwm7_m1 */
+                               <1 RK_PC2 2 &pcfg_pull_none_drv_level_0>;
+               };
+       };
+
+       pwr {
+               /omit-if-no-ref/
+               pwr_pins: pwr-pins {
+                       rockchip,pins =
+                               /* pwr_ctrl0 */
+                               <4 RK_PC2 2 &pcfg_pull_none>,
+                               /* pwr_ctrl1 */
+                               <4 RK_PB6 1 &pcfg_pull_none>;
+               };
+       };
+
+       ref {
+               /omit-if-no-ref/
+               refm0_pins: refm0-pins {
+                       rockchip,pins =
+                               /* ref_clk_out_m0 */
+                               <0 RK_PA1 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               refm1_pins: refm1-pins {
+                       rockchip,pins =
+                               /* ref_clk_out_m1 */
+                               <3 RK_PC3 6 &pcfg_pull_none>;
+               };
+       };
+
+       rgmii {
+               /omit-if-no-ref/
+               rgmii_miim: rgmii-miim {
+                       rockchip,pins =
+                               /* rgmii_mdc */
+                               <3 RK_PB6 2 &pcfg_pull_none_drv_level_2>,
+                               /* rgmii_mdio */
+                               <3 RK_PB7 2 &pcfg_pull_none_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               rgmii_rx_bus2: rgmii-rx_bus2 {
+                       rockchip,pins =
+                               /* rgmii_rxd0 */
+                               <3 RK_PA3 2 &pcfg_pull_none>,
+                               /* rgmii_rxd1 */
+                               <3 RK_PA2 2 &pcfg_pull_none>,
+                               /* rgmii_rxdv_crs */
+                               <3 RK_PC2 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmii_tx_bus2: rgmii-tx_bus2 {
+                       rockchip,pins =
+                               /* rgmii_txd0 */
+                               <3 RK_PA1 2 &pcfg_pull_none_drv_level_2>,
+                               /* rgmii_txd1 */
+                               <3 RK_PA0 2 &pcfg_pull_none_drv_level_2>,
+                               /* rgmii_txen */
+                               <3 RK_PC0 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmii_rgmii_clk: rgmii-rgmii_clk {
+                       rockchip,pins =
+                               /* rgmii_rxclk */
+                               <3 RK_PA5 2 &pcfg_pull_none>,
+                               /* rgmii_txclk */
+                               <3 RK_PA4 2 &pcfg_pull_none_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               rgmii_rgmii_bus: rgmii-rgmii_bus {
+                       rockchip,pins =
+                               /* rgmii_rxd2 */
+                               <3 RK_PA7 2 &pcfg_pull_none>,
+                               /* rgmii_rxd3 */
+                               <3 RK_PA6 2 &pcfg_pull_none>,
+                               /* rgmii_txd2 */
+                               <3 RK_PB1 2 &pcfg_pull_none_drv_level_2>,
+                               /* rgmii_txd3 */
+                               <3 RK_PB0 2 &pcfg_pull_none_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               rgmii_clk: rgmii-clk {
+                       rockchip,pins =
+                               /* rgmii_clk */
+                               <3 RK_PB4 2 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               rgmii_txer: rgmii-txer {
+                       rockchip,pins =
+                               /* rgmii_txer */
+                               <3 RK_PC1 2 &pcfg_pull_none>;
+               };
+       };
+
+       scr {
+               /omit-if-no-ref/
+               scrm0_pins: scrm0-pins {
+                       rockchip,pins =
+                               /* scr_clk_m0 */
+                               <1 RK_PA2 3 &pcfg_pull_none>,
+                               /* scr_data_m0 */
+                               <1 RK_PA1 3 &pcfg_pull_none>,
+                               /* scr_detn_m0 */
+                               <1 RK_PA0 3 &pcfg_pull_none>,
+                               /* scr_rstn_m0 */
+                               <1 RK_PA3 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               scrm1_pins: scrm1-pins {
+                       rockchip,pins =
+                               /* scr_clk_m1 */
+                               <2 RK_PA5 3 &pcfg_pull_none>,
+                               /* scr_data_m1 */
+                               <2 RK_PA3 4 &pcfg_pull_none>,
+                               /* scr_detn_m1 */
+                               <2 RK_PA6 3 &pcfg_pull_none>,
+                               /* scr_rstn_m1 */
+                               <2 RK_PA4 4 &pcfg_pull_none>;
+               };
+       };
+
+       sdio0 {
+               /omit-if-no-ref/
+               sdio0_bus4: sdio0-bus4 {
+                       rockchip,pins =
+                               /* sdio0_d0 */
+                               <1 RK_PA0 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdio0_d1 */
+                               <1 RK_PA1 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdio0_d2 */
+                               <1 RK_PA2 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdio0_d3 */
+                               <1 RK_PA3 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdio0_clk: sdio0-clk {
+                       rockchip,pins =
+                               /* sdio0_clk */
+                               <1 RK_PA5 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdio0_cmd: sdio0-cmd {
+                       rockchip,pins =
+                               /* sdio0_cmd */
+                               <1 RK_PA4 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdio0_det: sdio0-det {
+                       rockchip,pins =
+                               /* sdio0_det */
+                               <1 RK_PA6 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               sdio0_pwren: sdio0-pwren {
+                       rockchip,pins =
+                               /* sdio0_pwren */
+                               <1 RK_PA7 1 &pcfg_pull_none>;
+               };
+       };
+
+       sdio1 {
+               /omit-if-no-ref/
+               sdio1_bus4: sdio1-bus4 {
+                       rockchip,pins =
+                               /* sdio1_d0 */
+                               <3 RK_PA6 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdio1_d1 */
+                               <3 RK_PA7 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdio1_d2 */
+                               <3 RK_PB0 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdio1_d3 */
+                               <3 RK_PB1 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdio1_clk: sdio1-clk {
+                       rockchip,pins =
+                               /* sdio1_clk */
+                               <3 RK_PA4 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdio1_cmd: sdio1-cmd {
+                       rockchip,pins =
+                               /* sdio1_cmd */
+                               <3 RK_PA5 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdio1_det: sdio1-det {
+                       rockchip,pins =
+                               /* sdio1_det */
+                               <3 RK_PB3 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               sdio1_pwren: sdio1-pwren {
+                       rockchip,pins =
+                               /* sdio1_pwren */
+                               <3 RK_PB2 1 &pcfg_pull_none>;
+               };
+       };
+
+       sdmmc {
+               /omit-if-no-ref/
+               sdmmc_bus4: sdmmc-bus4 {
+                       rockchip,pins =
+                               /* sdmmc_d0 */
+                               <2 RK_PA0 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdmmc_d1 */
+                               <2 RK_PA1 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdmmc_d2 */
+                               <2 RK_PA2 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdmmc_d3 */
+                               <2 RK_PA3 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc_clk: sdmmc-clk {
+                       rockchip,pins =
+                               /* sdmmc_clk */
+                               <2 RK_PA5 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc_cmd: sdmmc-cmd {
+                       rockchip,pins =
+                               /* sdmmc_cmd */
+                               <2 RK_PA4 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc_det: sdmmc-det {
+                       rockchip,pins =
+                               /* sdmmc_detn */
+                               <2 RK_PA6 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc_pwren: sdmmc-pwren {
+                       rockchip,pins =
+                               /* sdmmc_pwren */
+                               <4 RK_PA1 1 &pcfg_pull_none>;
+               };
+       };
+
+       spdif {
+               /omit-if-no-ref/
+               spdifm0_pins: spdifm0-pins {
+                       rockchip,pins =
+                               /* spdif_tx_m0 */
+                               <4 RK_PA0 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               spdifm1_pins: spdifm1-pins {
+                       rockchip,pins =
+                               /* spdif_tx_m1 */
+                               <1 RK_PC3 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               spdifm2_pins: spdifm2-pins {
+                       rockchip,pins =
+                               /* spdif_tx_m2 */
+                               <3 RK_PC3 2 &pcfg_pull_none>;
+               };
+       };
+
+       spi0 {
+               /omit-if-no-ref/
+               spi0_pins: spi0-pins {
+                       rockchip,pins =
+                               /* spi0_clk */
+                               <4 RK_PB4 2 &pcfg_pull_none_drv_level_2>,
+                               /* spi0_miso */
+                               <4 RK_PB3 2 &pcfg_pull_none_drv_level_2>,
+                               /* spi0_mosi */
+                               <4 RK_PB2 2 &pcfg_pull_none_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               spi0_csn0: spi0-csn0 {
+                       rockchip,pins =
+                               /* spi0_csn0 */
+                               <4 RK_PB6 2 &pcfg_pull_none_drv_level_2>;
+               };
+               /omit-if-no-ref/
+               spi0_csn1: spi0-csn1 {
+                       rockchip,pins =
+                               /* spi0_csn1 */
+                               <4 RK_PC1 2 &pcfg_pull_none_drv_level_2>;
+               };
+       };
+
+       spi1 {
+               /omit-if-no-ref/
+               spi1_pins: spi1-pins {
+                       rockchip,pins =
+                               /* spi1_clk */
+                               <1 RK_PB6 2 &pcfg_pull_none_drv_level_2>,
+                               /* spi1_miso */
+                               <1 RK_PC0 2 &pcfg_pull_none_drv_level_2>,
+                               /* spi1_mosi */
+                               <1 RK_PB7 2 &pcfg_pull_none_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               spi1_csn0: spi1-csn0 {
+                       rockchip,pins =
+                               /* spi1_csn0 */
+                               <1 RK_PC1 1 &pcfg_pull_none_drv_level_2>;
+               };
+               /omit-if-no-ref/
+               spi1_csn1: spi1-csn1 {
+                       rockchip,pins =
+                               /* spi1_csn1 */
+                               <1 RK_PC2 1 &pcfg_pull_none_drv_level_2>;
+               };
+       };
+
+       tsi0 {
+               /omit-if-no-ref/
+               tsi0_pins: tsi0-pins {
+                       rockchip,pins =
+                               /* tsi0_clkin */
+                               <3 RK_PB2 3 &pcfg_pull_none>,
+                               /* tsi0_d0 */
+                               <3 RK_PB1 3 &pcfg_pull_none>,
+                               /* tsi0_d1 */
+                               <3 RK_PB5 3 &pcfg_pull_none>,
+                               /* tsi0_d2 */
+                               <3 RK_PB6 3 &pcfg_pull_none>,
+                               /* tsi0_d3 */
+                               <3 RK_PB7 3 &pcfg_pull_none>,
+                               /* tsi0_d4 */
+                               <3 RK_PA3 3 &pcfg_pull_none>,
+                               /* tsi0_d5 */
+                               <3 RK_PA2 3 &pcfg_pull_none>,
+                               /* tsi0_d6 */
+                               <3 RK_PA1 3 &pcfg_pull_none>,
+                               /* tsi0_d7 */
+                               <3 RK_PA0 3 &pcfg_pull_none>,
+                               /* tsi0_fail */
+                               <3 RK_PC0 3 &pcfg_pull_none>,
+                               /* tsi0_sync */
+                               <3 RK_PB4 3 &pcfg_pull_none>,
+                               /* tsi0_valid */
+                               <3 RK_PB3 3 &pcfg_pull_none>;
+               };
+       };
+
+       tsi1 {
+               /omit-if-no-ref/
+               tsi1_pins: tsi1-pins {
+                       rockchip,pins =
+                               /* tsi1_clkin */
+                               <3 RK_PA5 3 &pcfg_pull_none>,
+                               /* tsi1_d0 */
+                               <3 RK_PA4 3 &pcfg_pull_none>,
+                               /* tsi1_sync */
+                               <3 RK_PA7 3 &pcfg_pull_none>,
+                               /* tsi1_valid */
+                               <3 RK_PA6 3 &pcfg_pull_none>;
+               };
+       };
+
+       uart0 {
+               /omit-if-no-ref/
+               uart0m0_xfer: uart0m0-xfer {
+                       rockchip,pins =
+                               /* uart0_rx_m0 */
+                               <4 RK_PC7 1 &pcfg_pull_up>,
+                               /* uart0_tx_m0 */
+                               <4 RK_PD0 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart0m1_xfer: uart0m1-xfer {
+                       rockchip,pins =
+                               /* uart0_rx_m1 */
+                               <2 RK_PA0 2 &pcfg_pull_up>,
+                               /* uart0_tx_m1 */
+                               <2 RK_PA1 2 &pcfg_pull_up>;
+               };
+       };
+
+       uart1 {
+               /omit-if-no-ref/
+               uart1m0_xfer: uart1m0-xfer {
+                       rockchip,pins =
+                               /* uart1_rx_m0 */
+                               <4 RK_PA7 2 &pcfg_pull_up>,
+                               /* uart1_tx_m0 */
+                               <4 RK_PA6 2 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart1m1_xfer: uart1m1-xfer {
+                       rockchip,pins =
+                               /* uart1_rx_m1 */
+                               <4 RK_PC6 2 &pcfg_pull_up>,
+                               /* uart1_tx_m1 */
+                               <4 RK_PC5 2 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart1_ctsn: uart1-ctsn {
+                       rockchip,pins =
+                               /* uart1_ctsn */
+                               <4 RK_PA4 2 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart1_rtsn: uart1-rtsn {
+                       rockchip,pins =
+                               /* uart1_rtsn */
+                               <4 RK_PA5 2 &pcfg_pull_none>;
+               };
+       };
+
+       uart2 {
+               /omit-if-no-ref/
+               uart2m0_xfer: uart2m0-xfer {
+                       rockchip,pins =
+                               /* uart2_rx_m0 */
+                               <3 RK_PA0 1 &pcfg_pull_up>,
+                               /* uart2_tx_m0 */
+                               <3 RK_PA1 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart2m0_ctsn: uart2m0-ctsn {
+                       rockchip,pins =
+                               /* uart2m0_ctsn */
+                               <3 RK_PA3 1 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart2m0_rtsn: uart2m0-rtsn {
+                       rockchip,pins =
+                               /* uart2m0_rtsn */
+                               <3 RK_PA2 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart2m1_xfer: uart2m1-xfer {
+                       rockchip,pins =
+                               /* uart2_rx_m1 */
+                               <1 RK_PB0 1 &pcfg_pull_up>,
+                               /* uart2_tx_m1 */
+                               <1 RK_PB1 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart2m1_ctsn: uart2m1-ctsn {
+                       rockchip,pins =
+                               /* uart2m1_ctsn */
+                               <1 RK_PB3 1 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart2m1_rtsn: uart2m1-rtsn {
+                       rockchip,pins =
+                               /* uart2m1_rtsn */
+                               <1 RK_PB2 1 &pcfg_pull_none>;
+               };
+       };
+
+       uart3 {
+               /omit-if-no-ref/
+               uart3m0_xfer: uart3m0-xfer {
+                       rockchip,pins =
+                               /* uart3_rx_m0 */
+                               <4 RK_PB0 2 &pcfg_pull_up>,
+                               /* uart3_tx_m0 */
+                               <4 RK_PB1 2 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart3m1_xfer: uart3m1-xfer {
+                       rockchip,pins =
+                               /* uart3_rx_m1 */
+                               <4 RK_PB7 3 &pcfg_pull_up>,
+                               /* uart3_tx_m1 */
+                               <4 RK_PC0 3 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart3_ctsn: uart3-ctsn {
+                       rockchip,pins =
+                               /* uart3_ctsn */
+                               <4 RK_PA3 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart3_rtsn: uart3-rtsn {
+                       rockchip,pins =
+                               /* uart3_rtsn */
+                               <4 RK_PA2 3 &pcfg_pull_none>;
+               };
+       };
+
+       uart4 {
+               /omit-if-no-ref/
+               uart4_xfer: uart4-xfer {
+                       rockchip,pins =
+                               /* uart4_rx */
+                               <2 RK_PA2 3 &pcfg_pull_up>,
+                               /* uart4_tx */
+                               <2 RK_PA3 3 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart4_ctsn: uart4-ctsn {
+                       rockchip,pins =
+                               /* uart4_ctsn */
+                               <2 RK_PA1 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart4_rtsn: uart4-rtsn {
+                       rockchip,pins =
+                               /* uart4_rtsn */
+                               <2 RK_PA0 3 &pcfg_pull_none>;
+               };
+       };
+
+       uart5 {
+               /omit-if-no-ref/
+               uart5m0_xfer: uart5m0-xfer {
+                       rockchip,pins =
+                               /* uart5_rx_m0 */
+                               <1 RK_PA2 2 &pcfg_pull_up>,
+                               /* uart5_tx_m0 */
+                               <1 RK_PA3 2 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart5m0_ctsn: uart5m0-ctsn {
+                       rockchip,pins =
+                               /* uart5m0_ctsn */
+                               <1 RK_PA6 2 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart5m0_rtsn: uart5m0-rtsn {
+                       rockchip,pins =
+                               /* uart5m0_rtsn */
+                               <1 RK_PA5 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart5m1_xfer: uart5m1-xfer {
+                       rockchip,pins =
+                               /* uart5_rx_m1 */
+                               <1 RK_PD4 2 &pcfg_pull_up>,
+                               /* uart5_tx_m1 */
+                               <1 RK_PD7 2 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart5m1_ctsn: uart5m1-ctsn {
+                       rockchip,pins =
+                               /* uart5m1_ctsn */
+                               <1 RK_PD3 2 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart5m1_rtsn: uart5m1-rtsn {
+                       rockchip,pins =
+                               /* uart5m1_rtsn */
+                               <1 RK_PD2 2 &pcfg_pull_none>;
+               };
+       };
+
+       uart6 {
+               /omit-if-no-ref/
+               uart6m0_xfer: uart6m0-xfer {
+                       rockchip,pins =
+                               /* uart6_rx_m0 */
+                               <3 RK_PA7 4 &pcfg_pull_up>,
+                               /* uart6_tx_m0 */
+                               <3 RK_PA6 4 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart6m1_xfer: uart6m1-xfer {
+                       rockchip,pins =
+                               /* uart6_rx_m1 */
+                               <3 RK_PC3 4 &pcfg_pull_up>,
+                               /* uart6_tx_m1 */
+                               <3 RK_PC1 4 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart6_ctsn: uart6-ctsn {
+                       rockchip,pins =
+                               /* uart6_ctsn */
+                               <3 RK_PA4 4 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart6_rtsn: uart6-rtsn {
+                       rockchip,pins =
+                               /* uart6_rtsn */
+                               <3 RK_PA5 4 &pcfg_pull_none>;
+               };
+       };
+
+       uart7 {
+               /omit-if-no-ref/
+               uart7m0_xfer: uart7m0-xfer {
+                       rockchip,pins =
+                               /* uart7_rx_m0 */
+                               <3 RK_PB3 4 &pcfg_pull_up>,
+                               /* uart7_tx_m0 */
+                               <3 RK_PB2 4 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart7m0_ctsn: uart7m0-ctsn {
+                       rockchip,pins =
+                               /* uart7m0_ctsn */
+                               <3 RK_PB0 4 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart7m0_rtsn: uart7m0-rtsn {
+                       rockchip,pins =
+                               /* uart7m0_rtsn */
+                               <3 RK_PB1 4 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart7m1_xfer: uart7m1-xfer {
+                       rockchip,pins =
+                               /* uart7_rx_m1 */
+                               <1 RK_PB3 4 &pcfg_pull_up>,
+                               /* uart7_tx_m1 */
+                               <1 RK_PB2 4 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart7m1_ctsn: uart7m1-ctsn {
+                       rockchip,pins =
+                               /* uart7m1_ctsn */
+                               <1 RK_PB0 4 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart7m1_rtsn: uart7m1-rtsn {
+                       rockchip,pins =
+                               /* uart7m1_rtsn */
+                               <1 RK_PB1 4 &pcfg_pull_none>;
+               };
+       };
+};
index d2cdb63..57a446b 100644 (file)
  */
 
 /dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
 #include "rk3528.dtsi"
 
 / {
        model = "Radxa E20C";
        compatible = "radxa,e20c", "rockchip,rk3528";
 
+       aliases {
+               mmc0 = &sdhci;
+       };
+
        chosen {
                stdout-path = "serial0:1500000n8";
        };
+
+       adc-keys {
+               compatible = "adc-keys";
+               io-channels = <&saradc 0>;
+               io-channel-names = "buttons";
+               keyup-threshold-microvolt = <1800000>;
+               poll-interval = <100>;
+
+               button-maskrom {
+                       label = "MASKROM";
+                       linux,code = <KEY_SETUP>;
+                       press-threshold-microvolt = <0>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&user_key>;
+
+               button-user {
+                       gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
+                       label = "USER";
+                       linux,code = <BTN_1>;
+                       wakeup-source;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&lan_led_g>, <&sys_led_g>, <&wan_led_g>;
+
+               led-lan {
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
+                       function = LED_FUNCTION_LAN;
+                       gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "netdev";
+               };
+
+               led-sys {
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "on";
+                       function = LED_FUNCTION_HEARTBEAT;
+                       gpios = <&gpio4 RK_PC1 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "heartbeat";
+               };
+
+               led-wan {
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
+                       function = LED_FUNCTION_WAN;
+                       gpios = <&gpio4 RK_PC0 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "netdev";
+               };
+       };
+
+       vcc_1v8: regulator-1v8-vcc {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_1v8";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_3v3>;
+       };
+
+       vcc_3v3: regulator-3v3-vcc {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_3v3";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc5v0_sys: regulator-5v0-vcc-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+};
+
+&pinctrl {
+       gpio-keys {
+               user_key: user-key {
+                       rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       leds {
+               lan_led_g: lan-led-g {
+                       rockchip,pins = <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               sys_led_g: sys-led-g {
+                       rockchip,pins = <4 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               wan_led_g: wan-led-g {
+                       rockchip,pins = <4 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&saradc {
+       vref-supply = <&vcc_1v8>;
+       status = "okay";
+};
+
+&sdhci {
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       no-sd;
+       no-sdio;
+       non-removable;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vcc_1v8>;
+       status = "okay";
 };
 
 &uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0m0_xfer>;
        status = "okay";
 };
index e58faa9..26c3559 100644 (file)
@@ -4,8 +4,12 @@
  * Copyright (c) 2024 Yao Zi <ziyao@disroot.org>
  */
 
+#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/clock/rockchip,rk3528-cru.h>
+#include <dt-bindings/reset/rockchip,rk3528-cru.h>
 
 / {
        compatible = "rockchip,rk3528";
        #size-cells = <2>;
 
        aliases {
+               gpio0 = &gpio0;
+               gpio1 = &gpio1;
+               gpio2 = &gpio2;
+               gpio3 = &gpio3;
+               gpio4 = &gpio4;
                serial0 = &uart0;
                serial1 = &uart1;
                serial2 = &uart2;
@@ -51,6 +60,7 @@
                        reg = <0x0>;
                        device_type = "cpu";
                        enable-method = "psci";
+                       clocks = <&scmi_clk SCMI_CLK_CPU>;
                };
 
                cpu1: cpu@1 {
@@ -58,6 +68,7 @@
                        reg = <0x1>;
                        device_type = "cpu";
                        enable-method = "psci";
+                       clocks = <&scmi_clk SCMI_CLK_CPU>;
                };
 
                cpu2: cpu@2 {
@@ -65,6 +76,7 @@
                        reg = <0x2>;
                        device_type = "cpu";
                        enable-method = "psci";
+                       clocks = <&scmi_clk SCMI_CLK_CPU>;
                };
 
                cpu3: cpu@3 {
                        reg = <0x3>;
                        device_type = "cpu";
                        enable-method = "psci";
+                       clocks = <&scmi_clk SCMI_CLK_CPU>;
+               };
+       };
+
+       firmware {
+               scmi: scmi {
+                       compatible = "arm,scmi-smc";
+                       arm,smc-id = <0x82000010>;
+                       shmem = <&scmi_shmem>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       scmi_clk: protocol@14 {
+                               reg = <0x14>;
+                               #clock-cells = <1>;
+                       };
                };
        };
 
                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)>,
                #clock-cells = <0>;
        };
 
+       gmac0_clk: clock-gmac50m {
+               compatible = "fixed-clock";
+               clock-frequency = <50000000>;
+               clock-output-names = "gmac0";
+               #clock-cells = <0>;
+       };
+
        soc {
                compatible = "simple-bus";
                ranges = <0x0 0xfe000000 0x0 0xfe000000 0x0 0x2000000>;
                        #interrupt-cells = <3>;
                };
 
+               qos_crypto_a: qos@ff200000 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff200000 0x0 0x20>;
+               };
+
+               qos_crypto_p: qos@ff200080 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff200080 0x0 0x20>;
+               };
+
+               qos_dcf: qos@ff200100 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff200100 0x0 0x20>;
+               };
+
+               qos_dft2apb: qos@ff200200 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff200200 0x0 0x20>;
+               };
+
+               qos_dma2ddr: qos@ff200280 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff200280 0x0 0x20>;
+               };
+
+               qos_dmac: qos@ff200300 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff200300 0x0 0x20>;
+               };
+
+               qos_keyreader: qos@ff200380 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff200380 0x0 0x20>;
+               };
+
+               qos_cpu: qos@ff210000 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff210000 0x0 0x20>;
+               };
+
+               qos_debug: qos@ff210080 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff210080 0x0 0x20>;
+               };
+
+               qos_gpu_m0: qos@ff220000 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff220000 0x0 0x20>;
+               };
+
+               qos_gpu_m1: qos@ff220080 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff220080 0x0 0x20>;
+               };
+
+               qos_pmu_mcu: qos@ff240000 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff240000 0x0 0x20>;
+               };
+
+               qos_rkvdec: qos@ff250000 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff250000 0x0 0x20>;
+               };
+
+               qos_rkvenc: qos@ff260000 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff260000 0x0 0x20>;
+               };
+
+               qos_gmac0: qos@ff270000 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff270000 0x0 0x20>;
+               };
+
+               qos_hdcp: qos@ff270080 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff270080 0x0 0x20>;
+               };
+
+               qos_jpegdec: qos@ff270100 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff270100 0x0 0x20>;
+               };
+
+               qos_rga2_m0ro: qos@ff270200 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff270200 0x0 0x20>;
+               };
+
+               qos_rga2_m0wo: qos@ff270280 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff270280 0x0 0x20>;
+               };
+
+               qos_sdmmc0: qos@ff270300 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff270300 0x0 0x20>;
+               };
+
+               qos_usb2host: qos@ff270380 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff270380 0x0 0x20>;
+               };
+
+               qos_vdpp: qos@ff270480 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff270480 0x0 0x20>;
+               };
+
+               qos_vop: qos@ff270500 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff270500 0x0 0x20>;
+               };
+
+               qos_emmc: qos@ff280000 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff280000 0x0 0x20>;
+               };
+
+               qos_fspi: qos@ff280080 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff280080 0x0 0x20>;
+               };
+
+               qos_gmac1: qos@ff280100 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff280100 0x0 0x20>;
+               };
+
+               qos_pcie: qos@ff280180 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff280180 0x0 0x20>;
+               };
+
+               qos_sdio0: qos@ff280200 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff280200 0x0 0x20>;
+               };
+
+               qos_sdio1: qos@ff280280 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff280280 0x0 0x20>;
+               };
+
+               qos_tsp: qos@ff280300 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff280300 0x0 0x20>;
+               };
+
+               qos_usb3otg: qos@ff280380 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff280380 0x0 0x20>;
+               };
+
+               qos_vpu: qos@ff280400 {
+                       compatible = "rockchip,rk3528-qos", "syscon";
+                       reg = <0x0 0xff280400 0x0 0x20>;
+               };
+
+               cru: clock-controller@ff4a0000 {
+                       compatible = "rockchip,rk3528-cru";
+                       reg = <0x0 0xff4a0000 0x0 0x30000>;
+                       assigned-clocks =
+                               <&cru XIN_OSC0_DIV>, <&cru PLL_GPLL>,
+                               <&cru PLL_PPLL>, <&cru PLL_CPLL>,
+                               <&cru ARMCLK>, <&cru CLK_MATRIX_250M_SRC>,
+                               <&cru CLK_MATRIX_500M_SRC>,
+                               <&cru CLK_MATRIX_50M_SRC>,
+                               <&cru CLK_MATRIX_100M_SRC>,
+                               <&cru CLK_MATRIX_150M_SRC>,
+                               <&cru CLK_MATRIX_200M_SRC>,
+                               <&cru CLK_MATRIX_300M_SRC>,
+                               <&cru CLK_MATRIX_339M_SRC>,
+                               <&cru CLK_MATRIX_400M_SRC>,
+                               <&cru CLK_MATRIX_600M_SRC>,
+                               <&cru CLK_PPLL_50M_MATRIX>,
+                               <&cru CLK_PPLL_100M_MATRIX>,
+                               <&cru CLK_PPLL_125M_MATRIX>,
+                               <&cru ACLK_BUS_VOPGL_ROOT>;
+                       assigned-clock-rates =
+                               <32768>, <1188000000>,
+                               <1000000000>, <996000000>,
+                               <408000000>, <250000000>,
+                               <500000000>,
+                               <50000000>,
+                               <100000000>,
+                               <150000000>,
+                               <200000000>,
+                               <300000000>,
+                               <340000000>,
+                               <400000000>,
+                               <600000000>,
+                               <50000000>,
+                               <100000000>,
+                               <125000000>,
+                               <500000000>;
+                       clocks = <&xin24m>, <&gmac0_clk>;
+                       clock-names = "xin24m", "gmac0";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+               };
+
+               ioc_grf: syscon@ff540000 {
+                       compatible = "rockchip,rk3528-ioc-grf", "syscon";
+                       reg = <0x0 0xff540000 0x0 0x40000>;
+               };
+
                uart0: serial@ff9f0000 {
                        compatible = "rockchip,rk3528-uart", "snps,dw-apb-uart";
                        reg = <0x0 0xff9f0000 0x0 0x100>;
-                       clock-frequency = <24000000>;
+                       clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
+                       clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                uart1: serial@ff9f8000 {
                        compatible = "rockchip,rk3528-uart", "snps,dw-apb-uart";
                        reg = <0x0 0xff9f8000 0x0 0x100>;
+                       clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
+                       clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                uart2: serial@ffa00000 {
                        compatible = "rockchip,rk3528-uart", "snps,dw-apb-uart";
                        reg = <0x0 0xffa00000 0x0 0x100>;
+                       clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
+                       clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
 
                uart3: serial@ffa08000 {
                        compatible = "rockchip,rk3528-uart", "snps,dw-apb-uart";
+                       clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
+                       clock-names = "baudclk", "apb_pclk";
                        reg = <0x0 0xffa08000 0x0 0x100>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                uart4: serial@ffa10000 {
                        compatible = "rockchip,rk3528-uart", "snps,dw-apb-uart";
                        reg = <0x0 0xffa10000 0x0 0x100>;
+                       clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
+                       clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                uart5: serial@ffa18000 {
                        compatible = "rockchip,rk3528-uart", "snps,dw-apb-uart";
                        reg = <0x0 0xffa18000 0x0 0x100>;
+                       clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>;
+                       clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                uart6: serial@ffa20000 {
                        compatible = "rockchip,rk3528-uart", "snps,dw-apb-uart";
                        reg = <0x0 0xffa20000 0x0 0x100>;
+                       clocks = <&cru SCLK_UART6>, <&cru PCLK_UART6>;
+                       clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                uart7: serial@ffa28000 {
                        compatible = "rockchip,rk3528-uart", "snps,dw-apb-uart";
                        reg = <0x0 0xffa28000 0x0 0x100>;
+                       clocks = <&cru SCLK_UART7>, <&cru PCLK_UART7>;
+                       clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                };
+
+               saradc: adc@ffae0000 {
+                       compatible = "rockchip,rk3528-saradc";
+                       reg = <0x0 0xffae0000 0x0 0x10000>;
+                       clocks = <&cru CLK_SARADC>, <&cru PCLK_SARADC>;
+                       clock-names = "saradc", "apb_pclk";
+                       interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&cru SRST_P_SARADC>;
+                       reset-names = "saradc-apb";
+                       #io-channel-cells = <1>;
+                       status = "disabled";
+               };
+
+               sdhci: mmc@ffbf0000 {
+                       compatible = "rockchip,rk3528-dwcmshc",
+                                    "rockchip,rk3588-dwcmshc";
+                       reg = <0x0 0xffbf0000 0x0 0x10000>;
+                       assigned-clocks = <&cru BCLK_EMMC>, <&cru TCLK_EMMC>,
+                                         <&cru CCLK_SRC_EMMC>;
+                       assigned-clock-rates = <200000000>, <24000000>,
+                                              <200000000>;
+                       clocks = <&cru CCLK_SRC_EMMC>, <&cru HCLK_EMMC>,
+                                <&cru ACLK_EMMC>, <&cru BCLK_EMMC>,
+                                <&cru TCLK_EMMC>;
+                       clock-names = "core", "bus", "axi", "block", "timer";
+                       interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
+                       max-frequency = <200000000>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>,
+                                   <&emmc_strb>;
+                       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";
+                       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>;
+                       };
+
+                       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>;
+                       };
+               };
        };
 };
+
+#include "rk3528-pinctrl.dtsi"
index a483514..e7ba477 100644 (file)
        rockchip,default-sample-phase = <90>;
        status = "okay";
 
-       sdio-wifi@1 {
+       wifi@1 {
                compatible = "brcm,bcm4329-fmac";
                reg = <1>;
                interrupt-parent = <&gpio2>;
index 2d3ae15..3613661 100644 (file)
@@ -9,6 +9,8 @@
 #include "rk3566.dtsi"
 
 / {
+       chassis-type = "tablet";
+
        aliases {
                mmc0 = &sdhci;
        };
index 98e75df..3c127c5 100644 (file)
 };
 
 &gmac1 {
-       assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>;
-       assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>, <&gmac1_clkin>;
+       assigned-clocks = <&cru SCLK_GMAC1_RX_TX>,
+                         <&cru SCLK_GMAC1_RGMII_SPEED>,
+                         <&cru SCLK_GMAC1>;
+       assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>,
+                                <&cru SCLK_GMAC1>,
+                                <&gmac1_clkin>;
        clock_in_out = "input";
        phy-supply = <&vcc_3v3>;
        phy-mode = "rgmii";
index 24928a1..5707321 100644 (file)
 };
 
 &gmac1 {
-       assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>;
-       assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>, <&gmac1_clkin>;
+       assigned-clocks = <&cru SCLK_GMAC1_RX_TX>,
+                         <&cru SCLK_GMAC1_RGMII_SPEED>,
+                         <&cru SCLK_GMAC1>;
+       assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>,
+                                <&cru SCLK_GMAC1>,
+                                <&gmac1_clkin>;
        clock_in_out = "input";
        phy-mode = "rgmii";
        phy-supply = <&vcc_3v3>;
diff --git a/src/arm64/rockchip/rk3568-photonicat.dts b/src/arm64/rockchip/rk3568-photonicat.dts
new file mode 100644 (file)
index 0000000..58c1052
--- /dev/null
@@ -0,0 +1,588 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
+#include "rk3568.dtsi"
+
+/ {
+       model = "Ariaboard Photonicat";
+       compatible = "ariaboard,photonicat", "rockchip,rk3568";
+
+       aliases {
+               ethernet0 = &gmac0;
+               ethernet1 = &gmac1;
+               mmc0 = &sdhci;
+               mmc1 = &sdmmc0;
+               mmc2 = &sdmmc1;
+       };
+
+       battery: battery {
+               compatible = "simple-battery";
+               device-chemistry = "lithium-ion";
+               charge-full-design-microamp-hours = <6800000>;
+               energy-full-design-microwatt-hours = <25000000>;
+               voltage-max-design-microvolt = <4200000>;
+               voltage-min-design-microvolt = <3400000>;
+
+               ocv-capacity-celsius = <25>;
+               ocv-capacity-table-0 =  <4100000 100>, <4040000 90>,
+                                       <3980000 80>, <3920000 70>,
+                                       <3870000 60>, <3820000 50>,
+                                       <3790000 40>, <3770000 30>,
+                                       <3740000 20>, <3680000 10>,
+                                       <3450000 0>;
+       };
+
+       chosen: chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       hdmi_con: hdmi-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&hdmi_out_con>;
+                       };
+               };
+       };
+
+       vcc_1v8: regulator-vcc-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_1v8";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc3v3_sys>;
+       };
+
+       vcc_3v3: regulator-vcc-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_3v3";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc3v3_sys>;
+       };
+
+       /* actually fed by vcc_syson, dependent
+        * on pi6c clock generator
+        */
+       vcc3v3_pcie: regulator-vcc3v3-pcie {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_pcie";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc3v3_pi6c>;
+       };
+
+       /* pi6c pcie clock generator */
+       vcc3v3_pi6c: regulator-vcc3v3-pi6c {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pcie_pwren_h>;
+               regulator-name = "vcc3v3_pi6c";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_syson>;
+       };
+
+       vcc3v3_sd: regulator-vcc3v3-sd {
+               compatible = "regulator-fixed";
+               gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&sdmmc0_pwren>;
+               regulator-boot-on;
+               regulator-name = "vcc3v3_sd";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_3v3>;
+       };
+
+       vcc3v3_sys: regulator-vcc3v3-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_syson>;
+       };
+
+       vcc3v4_rf: regulator-vcc3v4-rf {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&rf_pwr_en>;
+               regulator-name = "vcc3v4_rf";
+               regulator-min-microvolt = <3400000>;
+               regulator-max-microvolt = <3400000>;
+               vin-supply = <&vccin_5v>;
+       };
+
+       vcc5v0_usb30_otg0: regulator-vcc5v0-usb30-otg0 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_host_pwren_h>;
+               regulator-name = "vcc5v0_usb30_otg0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vccin_5v>;
+       };
+
+       vccin_5v: regulator-vccin-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "vccin_5v";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       vcc_sysin: regulator-vcc-sysin {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_sysin";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vccin_5v>;
+       };
+
+       vcc_syson: regulator-vcc-syson {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_syson";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc_sysin>;
+       };
+
+       vcca_1v8: regulator-vcca-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcca_1v8";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc3v3_sys>;
+       };
+
+       vdda_0v9: regulator-vdda-0v9 {
+               compatible = "regulator-fixed";
+               regulator-name = "vdda_0v9";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <900000>;
+               regulator-max-microvolt = <900000>;
+               vin-supply = <&vcc3v3_sys>;
+       };
+
+       vdd_gpu: regulator-vdd-gpu {
+               compatible = "pwm-regulator";
+               pwms = <&pwm2 0 5000 1>;
+               pwm-supply = <&vcc_syson>;
+               regulator-name = "vdd_gpu";
+               regulator-min-microvolt = <800000>;
+               regulator-max-microvolt = <1350000>;
+               regulator-ramp-delay = <6001>;
+               regulator-settling-time-up-us = <250>;
+       };
+
+       vdd_logic: regulator-vdd-logic {
+               compatible = "pwm-regulator";
+               pwms = <&pwm1 0 5000 1>;
+               pwm-supply = <&vcc_syson>;
+               regulator-name = "vdd_logic";
+               regulator-min-microvolt = <500000>;
+               regulator-max-microvolt = <1350000>;
+               regulator-ramp-delay = <6001>;
+               regulator-settling-time-up-us = <250>;
+       };
+
+       rfkill-modem {
+               compatible = "rfkill-gpio";
+               label = "M.2 USB Modem";
+               radio-type = "wwan";
+               shutdown-gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
+       };
+
+       wifi_pwrseq: wifi-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&pmucru CLK_RTC_32K>;
+               clock-names = "ext_clock";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_reg_on_h &clk32k_out1>;
+               post-power-on-delay-ms = <200>;
+               reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&combphy0 {
+       status = "okay";
+};
+
+&combphy1 {
+       status = "okay";
+};
+
+&combphy2 {
+       status = "okay";
+};
+
+&cpu0 {
+       cpu-supply = <&vdd_cpu>;
+};
+
+&cpu1 {
+       cpu-supply = <&vdd_cpu>;
+};
+
+&cpu2 {
+       cpu-supply = <&vdd_cpu>;
+};
+
+&cpu3 {
+       cpu-supply = <&vdd_cpu>;
+};
+
+/* Motorcomm YT8521SC LAN port (require SGMII) */
+&gmac0 {
+       status = "disabled";
+};
+
+/* Motorcomm YT8521SC WAN port */
+&gmac1 {
+       assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
+       assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;
+       assigned-clock-rates = <0>, <125000000>;
+       clock_in_out = "output";
+       phy-handle = <&rgmii_phy>;
+       phy-mode = "rgmii-id";
+       phy-supply = <&vcc_3v3>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&gmac1m1_miim
+                    &gmac1m1_tx_bus2
+                    &gmac1m1_rx_bus2
+                    &gmac1m1_rgmii_clk
+                    &gmac1m1_rgmii_bus>;
+       status = "okay";
+};
+
+&gpu {
+       mali-supply = <&vdd_gpu>;
+       status = "okay";
+};
+
+&hdmi {
+       avdd-0v9-supply = <&vdda_0v9>;
+       avdd-1v8-supply = <&vcca_1v8>;
+       status = "okay";
+};
+
+&hdmi_in {
+       hdmi_in_vp0: endpoint {
+               remote-endpoint = <&vp0_out_hdmi>;
+       };
+};
+
+&hdmi_out {
+       hdmi_out_con: endpoint {
+               remote-endpoint = <&hdmi_con_in>;
+       };
+};
+
+&hdmi_sound {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       vdd_cpu: regulator@1c {
+               compatible = "tcs,tcs4525";
+               reg = <0x1c>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_cpu";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <800000>;
+               regulator-max-microvolt = <1150000>;
+               regulator-ramp-delay = <2300>;
+               vin-supply = <&vcc_syson>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2m1_xfer>;
+       status = "okay";
+};
+
+&i2s0_8ch {
+       status = "okay";
+};
+
+&mdio1 {
+       rgmii_phy: ethernet-phy@3 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x3>;
+               reset-assert-us = <20000>;
+               reset-deassert-us = <100000>;
+               reset-gpios = <&gpio4 RK_PC0 GPIO_ACTIVE_LOW>;
+               rx-internal-delay-ps = <1500>;
+               tx-internal-delay-ps = <1500>;
+       };
+};
+
+&pcie30phy {
+       status = "okay";
+};
+
+/* M.2 E-Key for PCIe WLAN */
+&pcie3x2 {
+       max-link-speed = <1>;
+       num-lanes = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie30x1m0_pins>;
+       reset-gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie>;
+       status = "okay";
+};
+
+&pinctrl {
+       bt {
+               bt_reg_on_h: bt-reg-on-h {
+                       rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie {
+               pcie_pwren_h: pcie-pwren-h {
+                       rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       sdmmc0 {
+               sdmmc0_pwren: sdmmc0-pwren {
+                       rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb {
+               rf_pwr_en: rf-pwr-en {
+                       rockchip,pins = <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               usb_host_pwren_h: usb-host-pwren-h {
+                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       wifi {
+               wifi_reg_on_h: wifi-reg-on-h {
+                       rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pmu_io_domains {
+       pmuio1-supply = <&vcc_3v3>;
+       pmuio2-supply = <&vcc_3v3>;
+       vccio1-supply = <&vcc_3v3>;
+       vccio2-supply = <&vcc_1v8>;
+       vccio3-supply = <&vcc_3v3>;
+       vccio4-supply = <&vcc_1v8>;
+       vccio5-supply = <&vcc_3v3>;
+       vccio6-supply = <&vcc_3v3>;
+       vccio7-supply = <&vcc_3v3>;
+       status = "okay";
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&pwm2 {
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&vcca_1v8>;
+       status = "okay";
+};
+
+/* eMMC */
+&sdhci {
+       bus-width = <8>;
+       max-frequency = <200000000>;
+       mmc-hs200-1_8v;
+       non-removable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vcc_1v8>;
+       status = "okay";
+};
+
+/* Micro SD card slot */
+&sdmmc0 {
+       bus-width = <4>;
+       cap-sd-highspeed;
+       cd-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_LOW>;
+       disable-wp;
+       no-1-8-v;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd>;
+       vmmc-supply = <&vcc3v3_sd>;
+       vqmmc-supply = <&vcc_3v3>;
+       status = "okay";
+};
+
+/* Qualcomm Atheros QCA9377 WiFi */
+&sdmmc1 {
+       bus-width = <4>;
+       cap-sd-highspeed;
+       cap-sdio-irq;
+       keep-power-in-suspend;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       non-removable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc3v3_sys>;
+       vqmmc-supply = <&vcc_1v8>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       wifi: wifi@1 {
+               reg = <1>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <RK_PB2 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "host-wake";
+       };
+};
+
+&tsadc {
+       rockchip,hw-tshut-mode = <1>;
+       rockchip,hw-tshut-polarity = <0>;
+       status = "okay";
+};
+
+/* Qualcomm Atheros QCA9377 Bluetooth */
+&uart1 {
+       dma-names = "tx", "rx";
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn &uart1m0_rtsn>;
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,qca9377-bt";
+               clocks = <&pmucru CLK_RTC_32K>;
+               enable-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_reg_on_h>;
+               vddio-supply = <&vcc_1v8>;
+       };
+};
+
+/* Debug UART */
+&uart2 {
+       status = "okay";
+};
+
+&uart3 {
+       dma-names = "tx", "rx";
+       status = "okay";
+};
+
+/* Onboard power management MCU */
+&uart4 {
+       dma-names = "tx", "rx";
+       status = "okay";
+};
+
+/* M.2 E-Key for USB Bluetooth */
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+/* USB Type-A Port */
+&usb_host0_xhci {
+       dr_mode = "host";
+       status = "okay";
+};
+
+/* M.2 B-Key for USB Modem WWAN */
+&usb_host1_xhci {
+       status = "okay";
+};
+
+&usb2phy0 {
+       status = "okay";
+};
+
+&usb2phy0_host {
+       phy-supply = <&vcc3v4_rf>;
+       status = "okay";
+};
+
+&usb2phy0_otg {
+       phy-supply = <&vcc5v0_usb30_otg0>;
+       status = "okay";
+};
+
+&usb2phy1 {
+       status = "okay";
+};
+
+&usb2phy1_otg {
+       phy-supply = <&vcc5v0_usb30_otg0>;
+       status = "okay";
+};
+
+&vop {
+       assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
+       assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
+       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>;
+       };
+};
+
+&xin32k {
+       pinctrl-names = "default";
+       pinctrl-0 = <&clk32k_out1>;
+};
index 7bd32d2..b80d628 100644 (file)
        bus-width = <8>;
        max-frequency = <200000000>;
        non-removable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
        status = "okay";
 };
 
index ac79140..44cfdfe 100644 (file)
        pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn &uart1m0_rtsn>;
        uart-has-rtscts;
        status = "okay";
-
-       bluetooth {
-               compatible = "brcm,bcm43438-bt";
-               clocks = <&rk809 1>;
-               clock-names = "lpo";
-               device-wakeup-gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>;
-               host-wakeup-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
-               shutdown-gpios = <&gpio4 RK_PB2 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&bt_host_wake &bt_wake &bt_enable>;
-               vbat-supply = <&vcc3v3_sys>;
-               vddio-supply = <&vcc_1v8>;
-               /* vddio comes from regulator on module, use IO bank voltage instead */
-       };
 };
 
 &uart2 {
index e553906..fd2214b 100644 (file)
                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 IRQ_TYPE_LEVEL_HIGH>,
                #clock-cells = <0>;
        };
 
-       sram@10f000 {
-               compatible = "mmio-sram";
-               reg = <0x0 0x0010f000 0x0 0x100>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-               ranges = <0 0x0 0x0010f000 0x100>;
-
-               scmi_shmem: sram@0 {
-                       compatible = "arm,scmi-shmem";
-                       reg = <0x0 0x100>;
-               };
-       };
-
        sata1: sata@fc400000 {
                compatible = "rockchip,rk3568-dwc-ahci", "snps,dwc-ahci";
                reg = <0 0xfc400000 0 0x1000>;
                mbi-alias = <0x0 0xfd410000>;
                mbi-ranges = <296 24>;
                msi-controller;
+               ranges;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               dma-noncoherent;
+
+               its: msi-controller@fd440000 {
+                       compatible = "arm,gic-v3-its";
+                       reg = <0x0 0xfd440000 0 0x20000>;
+                       dma-noncoherent;
+                       msi-controller;
+                       #msi-cells = <1>;
+               };
        };
 
        usb_host0_ehci: usb@fd800000 {
                num-ib-windows = <6>;
                num-ob-windows = <2>;
                max-link-speed = <2>;
-               msi-map = <0x0 &gic 0x0 0x1000>;
+               msi-map = <0x0 &its 0x0 0x1000>;
                num-lanes = <1>;
                phys = <&combphy2 PHY_TYPE_PCIE>;
                phy-names = "pcie-phy";
                status = "disabled";
        };
 
+       /*
+        * Testing showed that the HWRNG found in RK3566 produces unacceptably
+        * low quality of random data, so the HWRNG isn't enabled for all RK356x
+        * SoC variants despite its presence.
+        */
        rng: rng@fe388000 {
                compatible = "rockchip,rk3568-rng";
                reg = <0x0 0xfe388000 0x0 0x4000>;
index 7c73319..314067b 100644 (file)
@@ -10,6 +10,7 @@
 #include <dt-bindings/leds/common.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"
 
                stdout-path = "serial0:1500000n8";
        };
 
+       hdmi-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&hdmi_out_con>;
+                       };
+               };
+       };
+
        leds: leds {
                compatible = "gpio-leds";
 
                     &eth0m0_tx_bus2
                     &eth0m0_rx_bus2
                     &eth0m0_rgmii_clk
-                    &eth0m0_rgmii_bus
-                    &ethm0_clk0_25m_out>;
+                    &eth0m0_rgmii_bus>;
 
        phy-handle = <&rgmii_phy0>;
        status = "okay";
        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";
+};
+
 &i2c1 {
        status = "okay";
 
                reg = <0x51>;
                clock-output-names = "hym8563";
                interrupt-parent = <&gpio0>;
-               interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
+               interrupts = <RK_PA0 IRQ_TYPE_LEVEL_LOW>;
                pinctrl-names = "default";
                pinctrl-0 = <&hym8563_int>;
                wakeup-source;
        pinctrl-0 = <&uart0m0_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 782ca00..e368691 100644 (file)
@@ -10,6 +10,7 @@
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/leds/common.h>
 #include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
 #include "rk3576.dtsi"
 
 / {
                };
        };
 
+       hdmi-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&hdmi_out_con>;
+                       };
+               };
+       };
+
        leds: leds {
                compatible = "gpio-leds";
 
        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";
+};
+
 &i2c1 {
        status = "okay";
 
        dr_mode = "host";
        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>;
+       };
+};
diff --git a/src/arm64/rockchip/rk3576-roc-pc.dts b/src/arm64/rockchip/rk3576-roc-pc.dts
new file mode 100644 (file)
index 0000000..612b7bb
--- /dev/null
@@ -0,0 +1,736 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2024 Firefly Technology Co. Ltd
+ * Copyright (c) 2024 Heiko Stuebner <heiko@sntech.de>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/usb/pd.h>
+#include "rk3576.dtsi"
+
+/ {
+       model = "Firefly ROC-RK3576-PC";
+       compatible = "firefly,roc-rk3576-pc", "rockchip,rk3576";
+
+       aliases {
+               mmc0 = &sdhci;
+               mmc1 = &sdmmc;
+       };
+
+       chosen {
+               stdout-path = "serial0:1500000n8";
+       };
+
+       adc-keys-0 {
+               compatible = "adc-keys";
+               io-channels = <&saradc 0>;
+               io-channel-names = "buttons";
+               keyup-threshold-microvolt = <1800000>;
+               poll-interval = <100>;
+
+               button-maskrom {
+                       label = "Maskrom";
+                       linux,code = <KEY_SETUP>;
+                       press-threshold-microvolt = <17000>;
+               };
+       };
+
+       adc-keys-1 {
+               compatible = "adc-keys";
+               io-channels = <&saradc 1>;
+               io-channel-names = "buttons";
+               keyup-threshold-microvolt = <1800000>;
+               poll-interval = <100>;
+
+               button-recovery {
+                       label = "Recovery";
+                       linux,code = <KEY_VENDOR>;
+                       press-threshold-microvolt = <17000>;
+               };
+       };
+
+       vbus5v0_typec: regulator-vbus5v0-typec {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 RK_PD1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_otg0_pwren_h>;
+               regulator-name = "vbus5v0_typec";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc5v0_device_s0>;
+       };
+
+       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>;
+       };
+
+       vcc1v2_ufs_vccq_s0: regulator-vcc1v2-ufs-vccq-s0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc1v2_ufs_vccq_s0";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               vin-supply = <&vcc5v0_sys_s5>;
+       };
+
+       vcc1v8_ufs_vccq2_s0: regulator-vcc1v8-ufs-vccq2-s0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc1v8_ufs_vccq2_s0";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_1v8_s3>;
+       };
+
+       vcc3v3_pcie: regulator-vcc3v3-pcie {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 RK_PB3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pcie_pwren_h>;
+               regulator-name = "vcc3v3_pcie";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <5000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc3v3_rtc_s5: regulator-vcc3v3-rtc-s5 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_rtc_s5";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc5v0_sys_s5>;
+       };
+
+       vcc5v0_device_s0: regulator-vcc5v0-device-s0 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vcc5vd_en>;
+               regulator-name = "vcc5v0_device";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_sys_s5: regulator-vcc5v0-sys-s5 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_usb20_host1: regulator-vcc5v0-usb20-host1 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb3_host_pwren_h>;
+               regulator-name = "vcc5v0_host1";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc5v0_device_s0>;
+       };
+
+       vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_1v1_nldo_s3";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <1100000>;
+               regulator-max-microvolt = <1100000>;
+               vin-supply = <&vcc5v0_sys_s5>;
+       };
+
+       vcc_1v8_s0: regulator-vcc-1v8-s0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_1v8_s0";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_1v8_s3>;
+       };
+
+       vcc_2v0_pldo_s3: regulator-vcc-2v0-pldo-s3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_2v0_pldo_s3";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <2000000>;
+               regulator-max-microvolt = <2000000>;
+               vin-supply = <&vcc5v0_sys_s5>;
+       };
+
+       vcc_3v3_s0: regulator-vcc-3v3-s0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_3v3_s0";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_3v3_s3>;
+       };
+
+       vcc_ufs_s0: regulator-vcc-ufs-s0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_ufs_s0";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc5v0_sys_s5>;
+       };
+};
+
+&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>;
+};
+
+&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>;
+};
+
+&gpu {
+       mali-supply = <&vdd_gpu_s0>;
+       status = "okay";
+};
+
+&gmac0 {
+       clock_in_out = "output";
+       pinctrl-names = "default";
+       pinctrl-0 = <&eth0m0_miim
+                    &eth0m0_tx_bus2
+                    &eth0m0_rx_bus2
+                    &eth0m0_rgmii_clk
+                    &eth0m0_rgmii_bus
+                    &ethm0_clk0_25m_out>;
+       /* Use rgmii-rxid mode to disable rx delay inside Soc */
+       phy-mode = "rgmii-rxid";
+       phy-handle = <&rgmii_phy0>;
+       tx_delay = <0x21>;
+       status = "okay";
+};
+
+&mdio0 {
+       status = "okay";
+
+       rgmii_phy0: phy@1 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x1>;
+               clocks = <&cru REFCLKO25M_GMAC0_OUT>;
+               /* Reset time is 20ms, 100ms for rtl8211f */
+               reset-delay-us = <20000>;
+               reset-gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_LOW>;
+               reset-post-delay-us = <100000>;
+       };
+};
+
+&i2c1 {
+       status = "okay";
+
+       pmic@23 {
+               compatible = "rockchip,rk806";
+               reg = <0x23>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
+                           <&rk806_dvs2_null>, <&rk806_dvs3_null>;
+               system-power-controller;
+
+               vcc1-supply = <&vcc5v0_sys_s5>;
+               vcc2-supply = <&vcc5v0_sys_s5>;
+               vcc3-supply = <&vcc5v0_sys_s5>;
+               vcc4-supply = <&vcc5v0_sys_s5>;
+               vcc5-supply = <&vcc5v0_sys_s5>;
+               vcc6-supply = <&vcc5v0_sys_s5>;
+               vcc7-supply = <&vcc5v0_sys_s5>;
+               vcc8-supply = <&vcc5v0_sys_s5>;
+               vcc9-supply = <&vcc5v0_sys_s5>;
+               vcc10-supply = <&vcc5v0_sys_s5>;
+               vcc11-supply = <&vcc_2v0_pldo_s3>;
+               vcc12-supply = <&vcc5v0_sys_s5>;
+               vcc13-supply = <&vcc_1v1_nldo_s3>;
+               vcc14-supply = <&vcc_1v1_nldo_s3>;
+               vcca-supply = <&vcc5v0_sys_s5>;
+
+               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";
+               };
+
+               rk806_dvs1_slp: dvs1-slp-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun1";
+               };
+
+               rk806_dvs1_pwrdn: dvs1-pwrdn-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun2";
+               };
+
+               rk806_dvs1_rst: dvs1-rst-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun3";
+               };
+
+               rk806_dvs2_slp: dvs2-slp-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun1";
+               };
+
+               rk806_dvs2_pwrdn: dvs2-pwrdn-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun2";
+               };
+
+               rk806_dvs2_rst: dvs2-rst-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun3";
+               };
+
+               rk806_dvs2_dvs: dvs2-dvs-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun4";
+               };
+
+               rk806_dvs2_gpio: dvs2-gpio-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun5";
+               };
+
+               rk806_dvs3_slp: dvs3-slp-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun1";
+               };
+
+               rk806_dvs3_pwrdn: dvs3-pwrdn-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun2";
+               };
+
+               rk806_dvs3_rst: dvs3-rst-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun3";
+               };
+
+               rk806_dvs3_dvs: dvs3-dvs-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun4";
+               };
+
+               rk806_dvs3_gpio: dvs3-gpio-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun5";
+               };
+
+               regulators {
+                       vdd_cpu_big_s0: dcdc-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_cpu_big_s0";
+                               regulator-enable-ramp-delay = <400>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_npu_s0: dcdc-reg2 {
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_npu_s0";
+                               regulator-enable-ramp-delay = <400>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_lit_s0: dcdc-reg3 {
+                               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;
+                                       regulator-suspend-microvolt = <750000>;
+                               };
+                       };
+
+                       vcc_3v3_s3: dcdc-reg4 {
+                               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>;
+                               };
+                       };
+
+                       vdd_gpu_s0: dcdc-reg5 {
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_gpu_s0";
+                               regulator-enable-ramp-delay = <400>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <850000>;
+                               };
+                       };
+
+                       vddq_ddr_s0: dcdc-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vddq_ddr_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_logic_s0: dcdc-reg7 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <800000>;
+                               regulator-name = "vdd_logic_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8_s3: dcdc-reg8 {
+                               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>;
+                               };
+                       };
+
+                       vdd2_ddr_s3: dcdc-reg9 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vdd2_ddr_s3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vdd_ddr_s0: dcdc-reg10 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-name = "vdd_ddr_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcca_1v8_s0: pldo-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcca_1v8_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcca1v8_pldo2_s0: pldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcca1v8_pldo2_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda_1v2_s0: pldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-name = "vdda_1v2_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcca_3v3_s0: pldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcca_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-name = "vccio_sd_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcca1v8_pldo6_s3: pldo-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcca1v8_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>;
+                               };
+                       };
+
+                       vdda_ddr_pll_s0: nldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-name = "vdda_ddr_pll_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda0v75_hdmi_s0: nldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <837500>;
+                               regulator-max-microvolt = <837500>;
+                               regulator-name = "vdda0v75_hdmi_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda_0v85_s0: nldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-name = "vdda_0v85_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda_0v75_s0: nldo-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-name = "vdda_0v75_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c2 {
+       status = "okay";
+
+       /* pc9202 watchdog@3c with enable-gpio gpio0-c3 */
+
+       /* hnyetek,husb311 typec-portc@4e */
+
+       hym8563: rtc@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+               clock-output-names = "hym8563";
+               pinctrl-names = "default";
+               pinctrl-0 = <&rtc_int_l>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA0 IRQ_TYPE_LEVEL_LOW>;
+               wakeup-source;
+       };
+};
+
+&saradc {
+       vref-supply = <&vcca_1v8_s0>;
+       status = "okay";
+};
+
+&sdhci {
+       bus-width = <8>;
+       no-sdio;
+       no-sd;
+       non-removable;
+       max-frequency = <200000000>;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       full-pwr-cycle-in-suspend;
+       status = "okay";
+};
+
+&sdmmc {
+       max-frequency = <200000000>;
+       no-sdio;
+       no-mmc;
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       disable-wp;
+       sd-uhs-sdr104;
+       vqmmc-supply = <&vccio_sd_s0>;
+       status = "okay";
+};
+
+&pinctrl {
+       hym8563 {
+               rtc_int_l: rtc-int-l {
+                       rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       power {
+               vcc5vd_en: vcc5vd-en {
+                       rockchip,pins = <2 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               pcie_pwren_h: pcie-pwren-h {
+                       rockchip,pins = <2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb {
+               hub_reset_h: hub-reset-h {
+                       rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               usb3_host_pwren_h: usb3-host-pwren-h {
+                       rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               usb_otg0_pwren_h: usb-otg0-pwren-h {
+                       rockchip,pins = <0 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               usbc0_int_l: usbc0-int-l {
+                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       watchdog {
+               wd_en: wd-en {
+                       rockchip,pins = <0 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&uart0 {
+       pinctrl-0 = <&uart0m0_xfer>;
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart4m1_xfer &uart4m1_ctsn>;
+       status = "okay";
+};
+
+/* On the extension pin header */
+&uart6 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart6m3_xfer>;
+       status = "okay";
+};
diff --git a/src/arm64/rockchip/rk3576-rock-4d.dts b/src/arm64/rockchip/rk3576-rock-4d.dts
new file mode 100644 (file)
index 0000000..6756403
--- /dev/null
@@ -0,0 +1,751 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2024 Radxa Computer (Shenzhen) Co., Ltd.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.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"
+
+/ {
+       model = "Radxa ROCK 4D";
+       compatible = "radxa,rock-4d", "rockchip,rk3576";
+
+       aliases {
+               ethernet0 = &gmac0;
+               mmc0 = &sdmmc;
+       };
+
+       chosen {
+               stdout-path = "serial0:1500000n8";
+       };
+
+       hdmi-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&hdmi_out_con>;
+                       };
+               };
+       };
+
+       leds: leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_rgb_g &led_rgb_r>;
+
+               power-led {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_STATUS;
+                       gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "default-on";
+               };
+
+               user-led {
+                       color = <LED_COLOR_ID_BLUE>;
+                       function = LED_FUNCTION_HEARTBEAT;
+                       gpios = <&gpio0 RK_PC4 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       vcc_12v0_dcin: regulator-vcc-12v0-dcin {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-name = "vcc_12v0_dcin";
+       };
+
+       vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1100000>;
+               regulator-max-microvolt = <1100000>;
+               regulator-name = "vcc_1v1_nldo_s3";
+               vin-supply = <&vcc_5v0_sys>;
+       };
+
+       vcc_1v2_ufs_vccq_s0: regulator-vcc-1v2-ufs-vccq-s0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               regulator-name = "vcc_1v2_ufs_vccq_s0";
+               vin-supply = <&vcc_5v0_sys>;
+       };
+
+       vcc_1v8_s0: regulator-vcc-1v8-s0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-name = "vcc_1v8_s0";
+               vin-supply = <&vcc_1v8_s3>;
+       };
+
+       vcc_1v8_ufs_vccq2_s0: regulator-vcc-1v8-ufs-vccq2-s0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-name = "vcc_1v8_ufs_vccq2_s0";
+               vin-supply = <&vcc_1v8_s3>;
+       };
+
+       vcc_2v0_pldo_s3: regulator-vcc-2v0-pldo-s3 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <2000000>;
+               regulator-max-microvolt = <2000000>;
+               regulator-name = "vcc_2v0_pldo_s3";
+               vin-supply = <&vcc_5v0_sys>;
+       };
+
+       vcc_3v3_pcie: regulator-vcc-3v3-pcie {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pcie_pwren>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "vcc_3v3_pcie";
+               startup-delay-us = <5000>;
+               vin-supply = <&vcc_5v0_sys>;
+       };
+
+       vcc_3v3_rtc_s5: regulator-vcc-3v3-rtc-s5 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "vcc_3v3_rtc_s5";
+               vin-supply = <&vcc_5v0_sys>;
+       };
+
+       vcc_3v3_s0: regulator-vcc-3v3-s0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "vcc_3v3_s0";
+               vin-supply = <&vcc_3v3_s3>;
+       };
+
+       vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "vcc_3v3_ufs_s0";
+               vin-supply = <&vcc_5v0_sys>;
+       };
+
+       vcc_5v0_device: regulator-vcc-5v0-device {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc_5v0_device";
+               vin-supply = <&vcc_12v0_dcin>;
+       };
+
+       vcc_5v0_host: regulator-vcc-5v0-host {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio0 RK_PD3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_host_pwren>;
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc5v0_host";
+               vin-supply = <&vcc_5v0_device>;
+       };
+
+       vcc_5v0_sys: regulator-vcc-5v0-sys {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc_5v0_sys";
+               vin-supply = <&vcc_12v0_dcin>;
+       };
+};
+
+&combphy1_psu {
+       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 {
+       clock_in_out = "output";
+       phy-handle = <&rgmii_phy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&eth0m0_miim
+                    &eth0m0_tx_bus2
+                    &eth0m0_rx_bus2
+                    &eth0m0_rgmii_clk
+                    &eth0m0_rgmii_bus
+                    &ethm0_clk0_25m_out>;
+       status = "okay";
+};
+
+&gpu {
+       mali-supply = <&vdd_gpu_s0>;
+       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";
+};
+
+&i2c1 {
+       status = "okay";
+
+       pmic@23 {
+               compatible = "rockchip,rk806";
+               reg = <0x23>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               interrupt-parent = <&gpio0>;
+               interrupts = <6 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 = <&vcc_5v0_sys>;
+               vcc2-supply = <&vcc_5v0_sys>;
+               vcc3-supply = <&vcc_5v0_sys>;
+               vcc4-supply = <&vcc_5v0_sys>;
+               vcc5-supply = <&vcc_5v0_sys>;
+               vcc6-supply = <&vcc_5v0_sys>;
+               vcc7-supply = <&vcc_5v0_sys>;
+               vcc8-supply = <&vcc_5v0_sys>;
+               vcc9-supply = <&vcc_5v0_sys>;
+               vcc10-supply = <&vcc_5v0_sys>;
+               vcc11-supply = <&vcc_2v0_pldo_s3>;
+               vcc12-supply = <&vcc_5v0_sys>;
+               vcc13-supply = <&vcc_1v1_nldo_s3>;
+               vcc14-supply = <&vcc_1v1_nldo_s3>;
+               vcca-supply = <&vcc_5v0_sys>;
+
+               rk806_dvs1_null: dvs1-null-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun0";
+               };
+
+               rk806_dvs1_pwrdn: dvs1-pwrdn-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun2";
+               };
+
+               rk806_dvs1_rst: dvs1-rst-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun3";
+               };
+
+               rk806_dvs1_slp: dvs1-slp-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun1";
+               };
+
+               rk806_dvs2_dvs: dvs2-dvs-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun4";
+               };
+
+               rk806_dvs2_gpio: dvs2-gpio-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun5";
+               };
+
+               rk806_dvs2_null: dvs2-null-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun0";
+               };
+
+               rk806_dvs2_pwrdn: dvs2-pwrdn-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun2";
+               };
+
+               rk806_dvs2_rst: dvs2-rst-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun3";
+               };
+
+               rk806_dvs2_slp: dvs2-slp-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun1";
+               };
+
+               rk806_dvs3_dvs: dvs3-dvs-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun4";
+               };
+
+               rk806_dvs3_gpio: dvs3-gpio-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun5";
+               };
+
+               rk806_dvs3_null: dvs3-null-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun0";
+               };
+
+               rk806_dvs3_pwrdn: dvs3-pwrdn-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun2";
+               };
+
+               rk806_dvs3_rst: dvs3-rst-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun3";
+               };
+
+               rk806_dvs3_slp: dvs3-slp-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun1";
+               };
+
+               regulators {
+                       vdd_cpu_big_s0: dcdc-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-enable-ramp-delay = <400>;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-name = "vdd_cpu_big_s0";
+                               regulator-ramp-delay = <12500>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_npu_s0: dcdc-reg2 {
+                               regulator-boot-on;
+                               regulator-enable-ramp-delay = <400>;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-name = "vdd_npu_s0";
+                               regulator-ramp-delay = <12500>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_lit_s0: dcdc-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-name = "vdd_cpu_lit_s0";
+                               regulator-ramp-delay = <12500>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <750000>;
+                               };
+                       };
+
+                       vcc_3v3_s3: dcdc-reg4 {
+                               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>;
+                               };
+                       };
+
+                       vdd_gpu_s0: dcdc-reg5 {
+                               regulator-boot-on;
+                               regulator-enable-ramp-delay = <400>;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdd_gpu_s0";
+                               regulator-ramp-delay = <12500>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <850000>;
+                               };
+                       };
+
+                       vddq_ddr_s0: dcdc-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vddq_ddr_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_logic_s0: dcdc-reg7 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <800000>;
+                               regulator-name = "vdd_logic_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8_s3: dcdc-reg8 {
+                               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>;
+                               };
+                       };
+
+                       vdd2_ddr_s3: dcdc-reg9 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vdd2_ddr_s3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vdd_ddr_s0: dcdc-reg10 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-name = "vdd_ddr_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcca_1v8_s0: pldo-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcca_1v8_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcca1v8_pldo2_s0: pldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcca1v8_pldo2_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda_1v2_s0: pldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-name = "vdda_1v2_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcca_3v3_s0: pldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcca_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-name = "vccio_sd_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcca1v8_pldo6_s3: pldo-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcca1v8_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>;
+                               };
+                       };
+
+                       vdda_ddr_pll_s0: nldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-name = "vdda_ddr_pll_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda0v75_hdmi_s0: nldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <837500>;
+                               regulator-max-microvolt = <837500>;
+                               regulator-name = "vdda0v75_hdmi_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda_0v85_s0: nldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-name = "vdda_0v85_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda_0v75_s0: nldo-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-name = "vdda_0v75_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c2 {
+       status = "okay";
+
+       hym8563: rtc@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+               clock-output-names = "hym8563";
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA0 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&hym8563_int>;
+               wakeup-source;
+       };
+};
+
+&mdio0 {
+       rgmii_phy0: ethernet-phy@1 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x1>;
+               clocks = <&cru REFCLKO25M_GMAC0_OUT>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&rtl8211f_rst>;
+               reset-assert-us = <20000>;
+               reset-deassert-us = <100000>;
+               reset-gpio = <&gpio2 RK_PB5 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&pinctrl {
+       hym8563 {
+               hym8563_int: hym8563-int {
+                       rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       leds {
+               led_rgb_g: led-green-en {
+                       rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+               led_rgb_r: led-red-en {
+                       rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       rtl8211f {
+               rtl8211f_rst: rtl8211f-rst {
+                       rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie {
+               pcie_pwren: pcie-pwren {
+                       rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb {
+               usb_host_pwren: usb-host-pwren {
+                       rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       disable-wp;
+       max-frequency = <200000000>;
+       no-sdio;
+       no-mmc;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc_3v3_s3>;
+       vqmmc-supply = <&vccio_sd_s0>;
+       status = "okay";
+};
+
+
+&sfc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&fspi0_pins &fspi0_csn0>;
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <50000000>;
+               spi-rx-bus-width = <4>;
+               spi-tx-bus-width = <1>;
+               vcc-supply = <&vcc_1v8_s3>;
+       };
+};
+
+&u2phy0 {
+       status = "okay";
+};
+
+&u2phy1 {
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-0 = <&uart0m0_xfer>;
+       status = "okay";
+};
+
+&usb_drd1_dwc3 {
+       dr_mode = "host";
+       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 4dde954..ebb5fc8 100644 (file)
                        reg = <0x0>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <485>;
-                       clocks = <&scmi_clk ARMCLK_L>;
+                       clocks = <&scmi_clk SCMI_ARMCLK_L>;
                        operating-points-v2 = <&cluster0_opp_table>;
                        #cooling-cells = <2>;
                        dynamic-power-coefficient = <120>;
                        reg = <0x1>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <485>;
-                       clocks = <&scmi_clk ARMCLK_L>;
+                       clocks = <&scmi_clk SCMI_ARMCLK_L>;
                        operating-points-v2 = <&cluster0_opp_table>;
                        cpu-idle-states = <&CPU_SLEEP>;
                };
                        reg = <0x2>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <485>;
-                       clocks = <&scmi_clk ARMCLK_L>;
+                       clocks = <&scmi_clk SCMI_ARMCLK_L>;
                        operating-points-v2 = <&cluster0_opp_table>;
                        cpu-idle-states = <&CPU_SLEEP>;
                };
                        reg = <0x3>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <485>;
-                       clocks = <&scmi_clk ARMCLK_L>;
+                       clocks = <&scmi_clk SCMI_ARMCLK_L>;
                        operating-points-v2 = <&cluster0_opp_table>;
                        cpu-idle-states = <&CPU_SLEEP>;
                };
                        reg = <0x100>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
-                       clocks = <&scmi_clk ARMCLK_B>;
+                       clocks = <&scmi_clk SCMI_ARMCLK_B>;
                        operating-points-v2 = <&cluster1_opp_table>;
                        #cooling-cells = <2>;
                        dynamic-power-coefficient = <320>;
                        reg = <0x101>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
-                       clocks = <&scmi_clk ARMCLK_B>;
+                       clocks = <&scmi_clk SCMI_ARMCLK_B>;
                        operating-points-v2 = <&cluster1_opp_table>;
                        cpu-idle-states = <&CPU_SLEEP>;
                };
                        reg = <0x102>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
-                       clocks = <&scmi_clk ARMCLK_B>;
+                       clocks = <&scmi_clk SCMI_ARMCLK_B>;
                        operating-points-v2 = <&cluster1_opp_table>;
                        cpu-idle-states = <&CPU_SLEEP>;
                };
                        reg = <0x103>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
-                       clocks = <&scmi_clk ARMCLK_B>;
+                       clocks = <&scmi_clk SCMI_ARMCLK_B>;
                        operating-points-v2 = <&cluster1_opp_table>;
                        cpu-idle-states = <&CPU_SLEEP>;
                };
                };
        };
 
+       display_subsystem: display-subsystem {
+               compatible = "rockchip,display-subsystem";
+               ports = <&vop_out>;
+       };
+
        firmware {
                scmi: scmi {
                        compatible = "arm,scmi-smc";
                        };
                };
 
+               hdptxphy_grf: syscon@26032000 {
+                       compatible = "rockchip,rk3576-hdptxphy-grf", "syscon";
+                       reg = <0x0 0x26032000 0x0 0x100>;
+               };
+
                vo1_grf: syscon@26036000 {
                        compatible = "rockchip,rk3576-vo1-grf", "syscon";
                        reg = <0x0 0x26036000 0x0 0x100>;
                gpu: gpu@27800000 {
                        compatible = "rockchip,rk3576-mali", "arm,mali-bifrost";
                        reg = <0x0 0x27800000 0x0 0x200000>;
-                       assigned-clocks = <&scmi_clk CLK_GPU>;
+                       assigned-clocks = <&scmi_clk SCMI_CLK_GPU>;
                        assigned-clock-rates = <198000000>;
                        clocks = <&cru CLK_GPU>;
                        clock-names = "core";
                        status = "disabled";
                };
 
+               vop: vop@27d00000 {
+                       compatible = "rockchip,rk3576-vop";
+                       reg = <0x0 0x27d00000 0x0 0x3000>, <0x0 0x27d05000 0x0 0x1000>;
+                       reg-names = "vop", "gamma-lut";
+                       interrupts = <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 380 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "sys",
+                                         "vp0",
+                                         "vp1",
+                                         "vp2";
+                       clocks = <&cru ACLK_VOP>,
+                                <&cru HCLK_VOP>,
+                                <&cru DCLK_VP0>,
+                                <&cru DCLK_VP1>,
+                                <&cru DCLK_VP2>;
+                       clock-names = "aclk",
+                                     "hclk",
+                                     "dclk_vp0",
+                                     "dclk_vp1",
+                                     "dclk_vp2";
+                       iommus = <&vop_mmu>;
+                       power-domains = <&power RK3576_PD_VOP>;
+                       rockchip,grf = <&sys_grf>;
+                       rockchip,pmu = <&pmu>;
+                       status = "disabled";
+
+                       vop_out: ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               vp0: port@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               vp1: port@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               vp2: port@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+                       };
+               };
+
+               vop_mmu: iommu@27d07e00 {
+                       compatible = "rockchip,rk3576-iommu", "rockchip,rk3568-iommu";
+                       reg = <0x0 0x27d07e00 0x0 0x100>, <0x0 0x27d07f00 0x0 0x100>;
+                       interrupts = <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>;
+                       clock-names = "aclk", "iface";
+                       #iommu-cells = <0>;
+                       power-domains = <&power RK3576_PD_VOP>;
+                       status = "disabled";
+               };
+
+               hdmi: hdmi@27da0000 {
+                       compatible = "rockchip,rk3576-dw-hdmi-qp";
+                       reg = <0x0 0x27da0000 0x0 0x20000>;
+                       clocks = <&cru PCLK_HDMITX0>,
+                                <&cru CLK_HDMITX0_EARC>,
+                                <&cru CLK_HDMITX0_REF>,
+                                <&cru MCLK_SAI6_8CH>,
+                                <&cru CLK_HDMITXHDP>,
+                                <&cru HCLK_VO0_ROOT>;
+                       clock-names = "pclk", "earc", "ref", "aud", "hdp", "hclk_vo1";
+                       interrupts = <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 367 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "avp", "cec", "earc", "main", "hpd";
+                       phys = <&hdptxphy>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&hdmi_txm0_pins &hdmi_tx_scl &hdmi_tx_sda>;
+                       power-domains = <&power RK3576_PD_VO0>;
+                       resets = <&cru SRST_HDMITX0_REF>, <&cru SRST_HDMITXHDP>;
+                       reset-names = "ref", "hdp";
+                       rockchip,grf = <&ioc_grf>;
+                       rockchip,vo-grf = <&vo0_grf>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               hdmi_in: port@0 {
+                                       reg = <0>;
+                               };
+
+                               hdmi_out: port@1 {
+                                       reg = <1>;
+                               };
+                       };
+               };
+
                qos_hdcp1: qos@27f02000 {
                        compatible = "rockchip,rk3576-qos", "syscon";
                        reg = <0x0 0x27f02000 0x0 0x20>;
                        };
                };
 
+               ufshc: ufshc@2a2d0000 {
+                       compatible = "rockchip,rk3576-ufshc";
+                       reg = <0x0 0x2a2d0000 0x0 0x10000>,
+                             <0x0 0x2b040000 0x0 0x10000>,
+                             <0x0 0x2601f000 0x0 0x1000>,
+                             <0x0 0x2603c000 0x0 0x1000>,
+                             <0x0 0x2a2e0000 0x0 0x10000>;
+                       reg-names = "hci", "mphy", "hci_grf", "mphy_grf", "hci_apb";
+                       clocks = <&cru ACLK_UFS_SYS>, <&cru PCLK_USB_ROOT>, <&cru PCLK_MPHY>,
+                                <&cru CLK_REF_UFS_CLKOUT>;
+                       clock-names = "core", "pclk", "pclk_mphy", "ref_out";
+                       assigned-clocks = <&cru CLK_REF_OSC_MPHY>;
+                       assigned-clock-parents = <&cru CLK_REF_MPHY_26M>;
+                       interrupts = <GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&power RK3576_PD_USB>;
+                       pinctrl-0 = <&ufs_refclk>;
+                       pinctrl-names = "default";
+                       resets = <&cru SRST_A_UFS_BIU>, <&cru SRST_A_UFS_SYS>,
+                                <&cru SRST_A_UFS>, <&cru SRST_P_UFS_GRF>;
+                       reset-names = "biu", "sys", "ufs", "grf";
+                       reset-gpios = <&gpio4 RK_PD0 GPIO_ACTIVE_LOW>;
+                       status = "disabled";
+               };
+
+               sfc1: spi@2a300000 {
+                       compatible = "rockchip,sfc";
+                       reg = <0x0 0x2a300000 0x0 0x4000>;
+                       interrupts = <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_FSPI1_X2>, <&cru HCLK_FSPI1>;
+                       clock-names = "clk_sfc", "hclk_sfc";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                sdmmc: mmc@2a310000 {
                        compatible = "rockchip,rk3576-dw-mshc";
                        reg = <0x0 0x2a310000 0x0 0x4000>;
                        status = "disabled";
                };
 
+               sfc0: spi@2a340000 {
+                       compatible = "rockchip,sfc";
+                       reg = <0x0 0x2a340000 0x0 0x4000>;
+                       interrupts = <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_FSPI_X2>, <&cru HCLK_FSPI>;
+                       clock-names = "clk_sfc", "hclk_sfc";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               otp: otp@2a580000 {
+                       compatible = "rockchip,rk3576-otp";
+                       reg = <0x0 0x2a580000 0x0 0x400>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       clocks = <&cru CLK_OTPC_NS>, <&cru PCLK_OTPC_NS>,
+                                <&cru CLK_OTP_PHY_G>;
+                       clock-names = "otp", "apb_pclk", "phy";
+                       resets = <&cru SRST_OTPC_NS>, <&cru SRST_P_OTPC_NS>;
+                       reset-names = "otp", "apb";
+
+                       /* Data cells */
+                       cpu_code: cpu-code@2 {
+                               reg = <0x02 0x2>;
+                       };
+                       otp_cpu_version: cpu-version@5 {
+                               reg = <0x05 0x1>;
+                               bits = <3 3>;
+                       };
+                       otp_id: id@a {
+                               reg = <0x0a 0x10>;
+                       };
+                       cpub_leakage: cpub-leakage@1e {
+                               reg = <0x1e 0x1>;
+                       };
+                       cpul_leakage: cpul-leakage@1f {
+                               reg = <0x1f 0x1>;
+                       };
+                       npu_leakage: npu-leakage@20 {
+                               reg = <0x20 0x1>;
+                       };
+                       gpu_leakage: gpu-leakage@21 {
+                               reg = <0x21 0x1>;
+                       };
+                       log_leakage: log-leakage@22 {
+                               reg = <0x22 0x1>;
+                       };
+               };
+
                gic: interrupt-controller@2a701000 {
                        compatible = "arm,gic-400";
                        reg = <0x0 0x2a701000 0 0x10000>,
                        status = "disabled";
                };
 
+               hdptxphy: hdmiphy@2b000000 {
+                       compatible = "rockchip,rk3576-hdptx-phy", "rockchip,rk3588-hdptx-phy";
+                       reg = <0x0 0x2b000000 0x0 0x2000>;
+                       clocks = <&cru CLK_PHY_REF_SRC>, <&cru PCLK_HDPTX_APB>;
+                       clock-names = "ref", "apb";
+                       resets = <&cru SRST_P_HDPTX_APB>, <&cru SRST_HDPTX_INIT>,
+                                <&cru SRST_HDPTX_CMN>, <&cru SRST_HDPTX_LANE>;
+                       reset-names = "apb", "init", "cmn", "lane";
+                       rockchip,grf = <&hdptxphy_grf>;
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+
                sram: sram@3ff88000 {
                        compatible = "mmio-sram";
                        reg = <0x0 0x3ff88000 0x0 0x78000>;
index a3138d2..e44125e 100644 (file)
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &saradc {
        vref-supply = <&avcc_1v8_s0>;
        status = "okay";
index 08f0905..ae92743 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.dtsi"
 
 / {
                          "Headphone", "Headphones";
        };
 
+       hdmi0-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi0_con_in: endpoint {
+                               remote-endpoint = <&hdmi0_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";
+};
+
+&hdptxphy0 {
+       status = "okay";
+};
+
 &i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c0m2_xfer>;
        };
 };
 
+&i2s5_8ch {
+       status = "okay";
+};
+
 /* phy1 - right ethernet port */
 &pcie2x1l0 {
        reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
 &pcie2x1l1 {
        reset-gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_HIGH>;
        status = "okay";
+
+       pcie@0,0 {
+               reg = <0x300000 0 0 0 0>;
+               #address-cells = <3>;
+               #size-cells = <2>;
+               ranges;
+               device_type = "pci";
+               bus-range = <0x30 0x3f>;
+
+               wifi: wifi@0,0 {
+                       compatible = "pci14e4,449d";
+                       reg = <0x310000 0 0 0 0>;
+                       clocks = <&hym8563>;
+                       clock-names = "lpo";
+               };
+       };
 };
 
 /* phy0 - left ethernet port */
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        hym8563 {
                hym8563_int: hym8563-int {
        dr_mode = "host";
        status = "okay";
 };
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vop {
+       status = "okay";
+};
+
+&vp0 {
+       vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+               remote-endpoint = <&hdmi0_in_vp0>;
+       };
+};
index c3abdfb..1e18ad9 100644 (file)
        };
 
        firmware {
-               optee: optee {
-                       compatible = "linaro,optee-tz";
-                       method = "smc";
-               };
-
                scmi: scmi {
                        compatible = "arm,scmi-smc";
                        arm,smc-id = <0x82000010>;
                };
        };
 
+       hdmi0_sound: hdmi0-sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,mclk-fs = <128>;
+               simple-audio-card,name = "hdmi0";
+               status = "disabled";
+
+               simple-audio-card,codec {
+                       sound-dai = <&hdmi0>;
+               };
+
+               simple-audio-card,cpu {
+                       sound-dai = <&i2s5_8ch>;
+               };
+       };
+
        pmu-a55 {
                compatible = "arm,cortex-a55-pmu";
                interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition0>;
                                };
                        };
                        /* These power domains are grouped by VD_GPU */
-                       power-domain@RK3588_PD_GPU {
+                       pd_gpu: power-domain@RK3588_PD_GPU {
                                reg = <RK3588_PD_GPU>;
                                clocks = <&cru CLK_GPU>,
                                         <&cru CLK_GPU_COREGROUP>,
                         <&cru DCLK_VOP1>,
                         <&cru DCLK_VOP2>,
                         <&cru DCLK_VOP3>,
-                        <&cru PCLK_VOP_ROOT>;
+                        <&cru PCLK_VOP_ROOT>,
+                        <&hdptxphy0>;
                clock-names = "aclk",
                              "hclk",
                              "dclk_vp0",
                              "dclk_vp1",
                              "dclk_vp2",
                              "dclk_vp3",
-                             "pclk_vop";
+                             "pclk_vop",
+                             "pll_hdmiphy0";
                iommus = <&vop_mmu>;
                power-domains = <&power RK3588_PD_VOP>;
                rockchip,grf = <&sys_grf>;
                status = "disabled";
        };
 
+       spdif_tx2: spdif-tx@fddb0000 {
+               compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+               reg = <0x0 0xfddb0000 0x0 0x1000>;
+               assigned-clock-parents = <&cru PLL_AUPLL>;
+               assigned-clocks = <&cru CLK_SPDIF2_DP0_SRC>;
+               clock-names = "mclk", "hclk";
+               clocks = <&cru MCLK_SPDIF2>, <&cru HCLK_SPDIF2_DP0>;
+               dma-names = "tx";
+               dmas = <&dmac1 6>;
+               interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH 0>;
+               power-domains = <&power RK3588_PD_VO0>;
+               #sound-dai-cells = <0>;
+               status = "disabled";
+       };
+
        i2s4_8ch: i2s@fddc0000 {
                compatible = "rockchip,rk3588-i2s-tdm";
                reg = <0x0 0xfddc0000 0x0 0x1000>;
                status = "disabled";
        };
 
+       spdif_tx3: spdif-tx@fdde0000 {
+               compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+               reg = <0x0 0xfdde0000 0x0 0x1000>;
+               assigned-clock-parents = <&cru PLL_AUPLL>;
+               assigned-clocks = <&cru CLK_SPDIF3_SRC>;
+               clock-names = "mclk", "hclk";
+               clocks = <&cru MCLK_SPDIF3>, <&cru HCLK_SPDIF3>;
+               dma-names = "tx";
+               dmas = <&dmac1 7>;
+               interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH 0>;
+               power-domains = <&power RK3588_PD_VO1>;
+               #sound-dai-cells = <0>;
+               status = "disabled";
+       };
+
        i2s5_8ch: i2s@fddf0000 {
                compatible = "rockchip,rk3588-i2s-tdm";
                reg = <0x0 0xfddf0000 0x0 0x1000>;
                             <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH 0>,
                             <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH 0>;
                interrupt-names = "avp", "cec", "earc", "main", "hpd";
-               phys = <&hdptxphy_hdmi0>;
+               phys = <&hdptxphy0>;
                pinctrl-names = "default";
                pinctrl-0 = <&hdmim0_tx0_cec &hdmim0_tx0_hpd
                             &hdmim0_tx0_scl &hdmim0_tx0_sda>;
                reset-names = "ref", "hdp";
                rockchip,grf = <&sys_grf>;
                rockchip,vo-grf = <&vo1_grf>;
+               #sound-dai-cells = <0>;
                status = "disabled";
 
                ports {
                status = "disabled";
        };
 
+       rng@fe378000 {
+               compatible = "rockchip,rk3588-rng";
+               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>;
+       };
+
        i2s0_8ch: i2s@fe470000 {
                compatible = "rockchip,rk3588-i2s-tdm";
                reg = <0x0 0xfe470000 0x0 0x1000>;
                status = "disabled";
        };
 
+       spdif_tx0: spdif-tx@fe4e0000 {
+               compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+               reg = <0x0 0xfe4e0000 0x0 0x1000>;
+               assigned-clock-parents = <&cru PLL_AUPLL>;
+               assigned-clocks = <&cru CLK_SPDIF0_SRC>;
+               clock-names = "mclk", "hclk";
+               clocks = <&cru MCLK_SPDIF0>, <&cru HCLK_SPDIF0>;
+               dma-names = "tx";
+               dmas = <&dmac0 5>;
+               interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH 0>;
+               pinctrl-0 = <&spdif0m0_tx>;
+               pinctrl-names = "default";
+               power-domains = <&power RK3588_PD_AUDIO>;
+               #sound-dai-cells = <0>;
+               status = "disabled";
+       };
+
+       spdif_tx1: spdif-tx@fe4f0000 {
+               compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+               reg = <0x0 0xfe4f0000 0x0 0x1000>;
+               assigned-clock-parents = <&cru PLL_AUPLL>;
+               assigned-clocks = <&cru CLK_SPDIF1_SRC>;
+               clock-names = "mclk", "hclk";
+               clocks = <&cru MCLK_SPDIF1>, <&cru HCLK_SPDIF1>;
+               dma-names = "tx";
+               dmas = <&dmac1 5>;
+               interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH 0>;
+               pinctrl-0 = <&spdif1m0_tx>;
+               pinctrl-names = "default";
+               power-domains = <&power RK3588_PD_AUDIO>;
+               #sound-dai-cells = <0>;
+               status = "disabled";
+       };
+
        gic: interrupt-controller@fe600000 {
                compatible = "arm,gic-v3";
                reg = <0x0 0xfe600000 0 0x10000>, /* GICD */
                      <0x0 0xfe680000 0 0x100000>; /* GICR */
                interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH 0>;
                interrupt-controller;
+               dma-noncoherent;
                mbi-alias = <0x0 0xfe610000>;
                mbi-ranges = <424 56>;
                msi-controller;
                its0: msi-controller@fe640000 {
                        compatible = "arm,gic-v3-its";
                        reg = <0x0 0xfe640000 0x0 0x20000>;
+                       dma-noncoherent;
                        msi-controller;
                        #msi-cells = <1>;
                };
                its1: msi-controller@fe660000 {
                        compatible = "arm,gic-v3-its";
                        reg = <0x0 0xfe660000 0x0 0x20000>;
+                       dma-noncoherent;
                        msi-controller;
                        #msi-cells = <1>;
                };
                #dma-cells = <1>;
        };
 
-       hdptxphy_hdmi0: phy@fed60000 {
+       hdptxphy0: phy@fed60000 {
                compatible = "rockchip,rk3588-hdptx-phy";
                reg = <0x0 0xfed60000 0x0 0x2000>;
                clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>, <&cru PCLK_HDPTX0>;
                clock-names = "ref", "apb";
+               #clock-cells = <0>;
                #phy-cells = <0>;
                resets = <&cru SRST_HDPTX0>, <&cru SRST_P_HDPTX0>,
                         <&cru SRST_HDPTX0_INIT>, <&cru SRST_HDPTX0_CMN>,
index 9d525c8..9eda697 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
index bc6b43a..6dc10da 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
index 71ed680..cc37f08 100644 (file)
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        hym8563 {
                hym8563_int: hym8563-int {
index 5e72d0e..8a783dc 100644 (file)
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        leds {
                led_user_en: led_user_en {
index 7125790..0892034 100644 (file)
@@ -4,12 +4,24 @@
  */
 
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
 
 / {
        chosen {
                stdout-path = "serial2:1500000n8";
        };
 
+       hdmi1-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi1_con_in: endpoint {
+                               remote-endpoint = <&hdmi1_out_con>;
+                       };
+               };
+       };
+
        /* Unnamed gated oscillator: 100MHz,3.3V,3225 */
        pcie30_port0_refclk: pcie30_port1_refclk: pcie-oscillator {
                compatible = "gated-fixed-clock";
        status = "okay";
 };
 
+&hdmi1 {
+       status = "okay";
+};
+
+&hdmi1_in {
+       hdmi1_in_vp0: endpoint {
+               remote-endpoint = <&vp0_out_hdmi1>;
+       };
+};
+
+&hdmi1_out {
+       hdmi1_out_con: endpoint {
+               remote-endpoint = <&hdmi1_con_in>;
+       };
+};
+
+&hdptxphy1 {
+       status = "okay";
+};
+
 &i2c6 {
        status = "okay";
 
 &usb_host2_xhci {
        status = "okay";
 };
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vop {
+       status = "okay";
+};
+
+&vp0 {
+       vp0_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI1>;
+               remote-endpoint = <&hdmi1_in_vp0>;
+       };
+};
index ba49f0b..8e912da 100644 (file)
                };
        };
 
+       hdmi1-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi1_con_in: endpoint {
+                               remote-endpoint = <&hdmi1_out_con>;
+                       };
+               };
+       };
+
        pcie20_avdd0v85: regulator-pcie20-avdd0v85 {
                compatible = "regulator-fixed";
                regulator-name = "pcie20_avdd0v85";
        };
 };
 
-&hdptxphy_hdmi0 {
+&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>;
+       };
+};
+
+&hdptxphy0 {
+       status = "okay";
+};
+
+&hdptxphy1 {
        status = "okay";
 };
 
        status = "okay";
 
        es8388: audio-codec@11 {
-               compatible = "everest,es8388";
+               compatible = "everest,es8388", "everest,es8328";
                reg = <0x11>;
                clocks = <&cru I2S0_8CH_MCLKOUT>;
                assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        audio {
                hp_detect: headphone-detect {
        status = "okay";
 };
 
-&vop_mmu {
+&vop {
        status = "okay";
 };
 
-&vop {
+&vop_mmu {
        status = "okay";
 };
 
                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 840b638..099edb3 100644 (file)
@@ -7,6 +7,46 @@
 #include "rk3588-extra-pinctrl.dtsi"
 
 / {
+       hdmi1_sound: hdmi1-sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,mclk-fs = <128>;
+               simple-audio-card,name = "hdmi1";
+               status = "disabled";
+
+               simple-audio-card,codec {
+                       sound-dai = <&hdmi1>;
+               };
+
+               simple-audio-card,cpu {
+                       sound-dai = <&i2s6_8ch>;
+               };
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /*
+                * The 4k HDMI capture controller works only with 32bit
+                * phys addresses and doesn't support IOMMU. HDMI RX CMA
+                * must be reserved below 4GB.
+                * The size of 160MB was determined as follows:
+                * (3840 * 2160 pixels) * (4 bytes/pixel) * (2 frames/buffer) / 10^6 = 66MB
+                * To ensure sufficient support for practical use-cases,
+                * we doubled the 66MB value.
+                */
+               hdmi_receiver_cma: hdmi-receiver-cma {
+                       compatible = "shared-dma-pool";
+                       alloc-ranges = <0x0 0x0 0x0 0xffffffff>;
+                       size = <0x0 (160 * 0x100000)>; /* 160MiB */
+                       alignment = <0x0 0x40000>; /* 64K */
+                       no-map;
+                       status = "disabled";
+               };
+       };
+
        usb_host1_xhci: usb@fc400000 {
                compatible = "rockchip,rk3588-dwc3", "snps,dwc3";
                reg = <0x0 0xfc400000 0x0 0x400000>;
                };
        };
 
+       hdptxphy1_grf: syscon@fd5e4000 {
+               compatible = "rockchip,rk3588-hdptxphy-grf", "syscon";
+               reg = <0x0 0xfd5e4000 0x0 0x100>;
+       };
+
+       spdif_tx5: spdif-tx@fddb8000 {
+               compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+               reg = <0x0 0xfddb8000 0x0 0x1000>;
+               assigned-clock-parents = <&cru PLL_AUPLL>;
+               assigned-clocks = <&cru CLK_SPDIF5_DP1_SRC>;
+               clock-names = "mclk", "hclk";
+               clocks = <&cru MCLK_SPDIF5>, <&cru HCLK_SPDIF5_DP1>;
+               dma-names = "tx";
+               dmas = <&dmac1 22>;
+               interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH 0>;
+               power-domains = <&power RK3588_PD_VO0>;
+               #sound-dai-cells = <0>;
+               status = "disabled";
+       };
+
        i2s8_8ch: i2s@fddc8000 {
                compatible = "rockchip,rk3588-i2s-tdm";
                reg = <0x0 0xfddc8000 0x0 0x1000>;
                status = "disabled";
        };
 
+       spdif_tx4: spdif-tx@fdde8000 {
+               compatible = "rockchip,rk3588-spdif", "rockchip,rk3568-spdif";
+               reg = <0x0 0xfdde8000 0x0 0x1000>;
+               assigned-clock-parents = <&cru PLL_AUPLL>;
+               assigned-clocks = <&cru CLK_SPDIF4_SRC>;
+               clock-names = "mclk", "hclk";
+               clocks = <&cru MCLK_SPDIF4>, <&cru HCLK_SPDIF4>;
+               dma-names = "tx";
+               dmas = <&dmac1 8>;
+               interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH 0>;
+               power-domains = <&power RK3588_PD_VO1>;
+               #sound-dai-cells = <0>;
+               status = "disabled";
+       };
+
        i2s6_8ch: i2s@fddf4000 {
                compatible = "rockchip,rk3588-i2s-tdm";
                reg = <0x0 0xfddf4000 0x0 0x1000>;
                status = "disabled";
        };
 
+       hdmi1: hdmi@fdea0000 {
+               compatible = "rockchip,rk3588-dw-hdmi-qp";
+               reg = <0x0 0xfdea0000 0x0 0x20000>;
+               clocks = <&cru PCLK_HDMITX1>,
+                        <&cru CLK_HDMITX1_EARC>,
+                        <&cru CLK_HDMITX1_REF>,
+                        <&cru MCLK_I2S6_8CH_TX>,
+                        <&cru CLK_HDMIHDP1>,
+                        <&cru HCLK_VO1>;
+               clock-names = "pclk", "earc", "ref", "aud", "hdp", "hclk_vo1";
+               interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 175 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH 0>;
+               interrupt-names = "avp", "cec", "earc", "main", "hpd";
+               phys = <&hdptxphy1>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&hdmim2_tx1_cec &hdmim0_tx1_hpd
+                            &hdmim1_tx1_scl &hdmim1_tx1_sda>;
+               power-domains = <&power RK3588_PD_VO1>;
+               resets = <&cru SRST_HDMITX1_REF>, <&cru SRST_HDMIHDP1>;
+               reset-names = "ref", "hdp";
+               rockchip,grf = <&sys_grf>;
+               rockchip,vo-grf = <&vo1_grf>;
+               #sound-dai-cells = <0>;
+               status = "disabled";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       hdmi1_in: port@0 {
+                               reg = <0>;
+                       };
+
+                       hdmi1_out: port@1 {
+                               reg = <1>;
+                       };
+               };
+       };
+
+       hdmi_receiver: hdmi_receiver@fdee0000 {
+               compatible = "rockchip,rk3588-hdmirx-ctrler", "snps,dw-hdmi-rx";
+               reg = <0x0 0xfdee0000 0x0 0x6000>;
+               interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH 0>,
+                            <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH 0>;
+               interrupt-names = "cec", "hdmi", "dma";
+               clocks = <&cru ACLK_HDMIRX>,
+                        <&cru CLK_HDMIRX_AUD>,
+                        <&cru CLK_CR_PARA>,
+                        <&cru PCLK_HDMIRX>,
+                        <&cru CLK_HDMIRX_REF>,
+                        <&cru PCLK_S_HDMIRX>,
+                        <&cru HCLK_VO1>;
+               clock-names = "aclk",
+                             "audio",
+                             "cr_para",
+                             "pclk",
+                             "ref",
+                             "hclk_s_hdmirx",
+                             "hclk_vo1";
+               memory-region = <&hdmi_receiver_cma>;
+               power-domains = <&power RK3588_PD_VO1>;
+               resets = <&cru SRST_A_HDMIRX>, <&cru SRST_P_HDMIRX>,
+                        <&cru SRST_HDMIRX_REF>, <&cru SRST_A_HDMIRX_BIU>;
+               reset-names = "axi", "apb", "ref", "biu";
+               rockchip,grf = <&sys_grf>;
+               rockchip,vo1-grf = <&vo1_grf>;
+               status = "disabled";
+       };
+
        pcie3x4: pcie@fe150000 {
                compatible = "rockchip,rk3588-pcie", "rockchip,rk3568-pcie";
                #address-cells = <3>;
                };
        };
 
+       hdptxphy1: phy@fed70000 {
+               compatible = "rockchip,rk3588-hdptx-phy";
+               reg = <0x0 0xfed70000 0x0 0x2000>;
+               clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>, <&cru PCLK_HDPTX1>;
+               clock-names = "ref", "apb";
+               #clock-cells = <0>;
+               #phy-cells = <0>;
+               resets = <&cru SRST_HDPTX1>, <&cru SRST_P_HDPTX1>,
+                        <&cru SRST_HDPTX1_INIT>, <&cru SRST_HDPTX1_CMN>,
+                        <&cru SRST_HDPTX1_LANE>, <&cru SRST_HDPTX1_ROPLL>,
+                        <&cru SRST_HDPTX1_LCPLL>;
+               reset-names = "phy", "apb", "init", "cmn", "lane", "ropll",
+                             "lcpll";
+               rockchip,grf = <&hdptxphy1_grf>;
+               status = "disabled";
+       };
+
        usbdp_phy1: phy@fed90000 {
                compatible = "rockchip,rk3588-usbdp-phy";
                reg = <0x0 0xfed90000 0x0 0x10000>;
                status = "disabled";
        };
 };
+
+&vop {
+       clocks = <&cru ACLK_VOP>,
+                <&cru HCLK_VOP>,
+                <&cru DCLK_VOP0>,
+                <&cru DCLK_VOP1>,
+                <&cru DCLK_VOP2>,
+                <&cru DCLK_VOP3>,
+                <&cru PCLK_VOP_ROOT>,
+                <&hdptxphy0>,
+                <&hdptxphy1>;
+       clock-names = "aclk",
+                     "hclk",
+                     "dclk_vp0",
+                     "dclk_vp1",
+                     "dclk_vp2",
+                     "dclk_vp3",
+                     "pclk_vop",
+                     "pll_hdmiphy0",
+                     "pll_hdmiphy1";
+};
index 3900513..4331cdc 100644 (file)
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        leds {
                led_rgb_b: led-rgb-b {
index 42c523b..80e16ea 100644 (file)
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &sdhci {
        bus-width = <8>;
        no-sdio;
diff --git a/src/arm64/rockchip/rk3588-firefly-icore-3588q.dtsi b/src/arm64/rockchip/rk3588-firefly-icore-3588q.dtsi
new file mode 100644 (file)
index 0000000..6726eeb
--- /dev/null
@@ -0,0 +1,443 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+
+#include "rk3588.dtsi"
+
+/ {
+       compatible = "firefly,icore-3588q", "rockchip,rk3588";
+
+       aliases {
+               mmc0 = &sdhci;
+       };
+};
+
+&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>;
+};
+
+&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-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <550000>;
+               regulator-max-microvolt = <1050000>;
+               regulator-name = "vdd_cpu_big0_s0";
+               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-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <550000>;
+               regulator-max-microvolt = <1050000>;
+               regulator-name = "vdd_cpu_big1_s0";
+               regulator-ramp-delay = <2300>;
+               vin-supply = <&vcc5v0_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1m2_xfer>;
+       status = "okay";
+
+       vdd_npu_s0: vdd_npu_mem_s0: regulator@42 {
+               compatible = "rockchip,rk8602";
+               reg = <0x42>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <550000>;
+               regulator-max-microvolt = <950000>;
+               regulator-name = "vdd_npu_s0";
+               regulator-ramp-delay = <2300>;
+               vin-supply = <&vcc5v0_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+};
+
+&sdhci {
+       bus-width = <8>;
+       no-sdio;
+       no-sd;
+       non-removable;
+       max-frequency = <150000000>;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       status = "okay";
+};
+
+&spi2 {
+       assigned-clocks = <&cru CLK_SPI2>;
+       assigned-clock-rates = <200000000>;
+       num-cs = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi2m2_cs0 &spi2m2_pins>;
+       status = "okay";
+
+       pmic@0 {
+               compatible = "rockchip,rk806";
+               reg = <0x0>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
+                           <&rk806_dvs2_null>, <&rk806_dvs3_null>;
+               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 = <&vcc_1v1_nldo_s3>;
+               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: 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 = <950000>;
+                               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-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-name = "vcc_3v3_s0";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vccio_sd_s0: pldo-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               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;
+                               };
+                       };
+               };
+       };
+};
+
+&uart2 {
+       pinctrl-0 = <&uart2m0_xfer>;
+       status = "okay";
+};
index 2be5251..e086114 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
index b3a04ca..8171fbf 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
index e3a9598..af431fd 100644 (file)
                compatible = "realtek,rt5616";
                reg = <0x1b>;
                #sound-dai-cells = <0>;
+               assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
+               assigned-clock-rates = <12288000>;
+               clocks = <&cru I2S0_8CH_MCLKOUT>;
+               clock-names = "mclk";
        };
 };
 
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        gpio-leds {
                led_sys_pin: led-sys-pin {
index 4791b77..73d8ce4 100644 (file)
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
        };
+
+       spdif_dit: spdif-dit {
+               compatible = "linux,spdif-dit";
+               #sound-dai-cells = <0>;
+       };
+
+       spdif_sound: spdif-sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "SPDIF";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&spdif_tx0>;
+               };
+
+               simple-audio-card,codec {
+                       sound-dai = <&spdif_dit>;
+               };
+       };
 };
 
 &combphy0_ps {
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        hym8563 {
                hym8563_int: hym8563-int {
        status = "okay";
 };
 
+&spdif_tx0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spdif0m1_tx>;
+       status = "okay";
+};
+
 &spi2 {
        assigned-clocks = <&cru CLK_SPI2>;
        assigned-clock-rates = <200000000>;
diff --git a/src/arm64/rockchip/rk3588-jaguar-pre-ict-tester.dtso b/src/arm64/rockchip/rk3588-jaguar-pre-ict-tester.dtso
new file mode 100644 (file)
index 0000000..9d44dfe
--- /dev/null
@@ -0,0 +1,171 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (c) 2024 Cherry Embedded Solutions GmbH
+ *
+ * Device Tree Overlay for the Pre-ICT tester adapter for the Mezzanine
+ * connector on RK3588 Jaguar.
+ *
+ * This adapter has a PCIe Gen2 x1 M.2 M-Key connector and two proprietary
+ * camera connectors (each their own I2C bus, clock, reset and PWM lines as well
+ * as 2-lane CSI).
+ *
+ * This adapter routes some GPIOs to power rails and loops together some other
+ * GPIOs.
+ *
+ * This adapter is used during manufacturing for validating proper soldering of
+ * the mezzanine connector.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+
+&{/} {
+       pre_ict_tester_vcc_1v2: regulator-pre-ict-tester-vcc-1v2 {
+               compatible = "regulator-fixed";
+               regulator-name = "pre_ict_tester_vcc_1v2";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               vin-supply = <&vcc_3v3_s3>;
+       };
+
+       pre_ict_tester_vcc_2v8: regulator-pre-ict-tester-vcc-2v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "pre_ict_tester_vcc_2v8";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vcc_3v3_s3>;
+       };
+};
+
+&combphy0_ps {
+       status = "okay";
+};
+
+&gpio3 {
+       pinctrl-0 = <&pre_ict_pwr2gpio>;
+       pinctrl-names = "default";
+};
+
+&pcie2x1l2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie2x1l2_perstn_m0>;
+       reset-gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_HIGH>; /* PCIE20X1_2_PERSTN_M0 */
+       vpcie3v3-supply = <&vcc_3v3_s3>;
+       status = "okay";
+};
+
+&pinctrl {
+       pcie2x1l2 {
+               pcie2x1l2_perstn_m0: pcie2x1l2-perstn-m0 {
+                       rockchip,pins = <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pre-ict-tester {
+               pre_ict_pwr2gpio: pre-ict-pwr2gpio-pins {
+                       rockchip,pins =
+                       /*
+                        * GPIO3_A3 requires two power rails to be properly
+                        * routed to the mezzanine connector to report a proper
+                        * value: VCC_1V8_S0_1 and VCC_IN_2. It may report an
+                        * incorrect value if VCC_1V8_S0_1 isn't properly routed,
+                        * but GPIO3_C6 would catch this HW soldering issue.
+                        * If VCC_IN_2 is properly routed, GPIO3_A3 should be
+                        * LOW. The signal shall not read HIGH in the event
+                        * GPIO3_A3 isn't properly routed due to soldering
+                        * issue. Therefore, let's enforce a pull-up (which is
+                        * the SoC default for this pin).
+                        */
+                               <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>,
+                       /*
+                        * GPIO3_A4 is directly routed to VCC_1V8_S0_2 power
+                        * rail. It should be HIGH if all is properly soldered.
+                        * To guarantee that, a pull-down is enforced (which is
+                        * the SoC default for this pin) so that LOW is read if
+                        * the loop doesn't exist on HW (soldering issue on
+                        * either signals).
+                        */
+                               <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>,
+                       /*
+                        * GPIO3_B2 requires two power rails to be properly
+                        * routed to the mezzanine connector to report a proper
+                        * value: VCC_1V8_S0_1 and VCC_IN_1. It may report an
+                        * incorrect value if VCC_1V8_S0_1 isn't properly routed,
+                        * but GPIO3_C6 would catch this HW soldering issue.
+                        * If VCC_IN_1 is properly routed, GPIO3_B2 should be
+                        * LOW. This is an issue if GPIO3_B2 isn't properly
+                        * routed due to soldering issue, because GPIO3_B2
+                        * default bias is pull-down therefore being LOW. So
+                        * the worst case scenario and the pass scenario expect
+                        * the same value. Make GPIO3_B2 a pull-up so that a
+                        * soldering issue on GPIO3_B2 reports HIGH but proper
+                        * soldering reports LOW.
+                        */
+                               <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>,
+                       /*
+                        * GPIO3_C6 is directly routed to VCC_1V8_S0_1 power
+                        * rail. It should be HIGH if all is properly soldered.
+                        * This is an issue if GPIO3_C6 or VCC_1V8_S0_1 isn't
+                        * properly routed due to soldering issue, because
+                        * GPIO3_C6 default bias is pull-up therefore being HIGH
+                        * in all cases:
+                        *  - GPIO3_C6 is floating (so HIGH) if GPIO3_C6 is not
+                        *    routed properly,
+                        *  - GPIO3_C6 is floating (so HIGH) if VCC_1V8_S0_1 is
+                        *    not routed properly,
+                        *  - GPIO3_C6 is HIGH if everything is proper,
+                        * Make GPIO3_C6 a pull-down so that a soldering issue
+                        * on GPIO3_C6 or VCC_1V8_S0_1 reports LOW but proper
+                        * soldering reports HIGH.
+                        */
+                               <3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>,
+                       /*
+                        * GPIO3_D2 is routed to VCC_5V0_1 power rail through a
+                        * voltage divider on the adapter.
+                        * It should be HIGH if all is properly soldered.
+                        * To guarantee that, a pull-down is enforced (which is
+                        * the SoC default for this pin) so that LOW is read if
+                        * the loop doesn't exist on HW (soldering issue on
+                        * either signals).
+                        */
+                               <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_down>,
+                       /*
+                        * GPIO3_D3 is routed to VCC_5V0_2 power rail through a
+                        * voltage divider on the adapter.
+                        * It should be HIGH if all is properly soldered.
+                        * To guarantee that, a pull-down is enforced (which is
+                        * the SoC default for this pin) so that LOW is read if
+                        * the loop doesn't exist on HW (soldering issue on
+                        * either signals).
+                        */
+                               <3 RK_PD3 RK_FUNC_GPIO &pcfg_pull_down>,
+                       /*
+                        * GPIO3_D4 is routed to VCC_3V3_S3_1 power rail through
+                        * a voltage divider on the adapter.
+                        * It should be HIGH if all is properly soldered.
+                        * To guarantee that, a pull-down is enforced (which is
+                        * the SoC default for this pin) so that LOW is read if
+                        * the loop doesn't exist on HW (soldering issue on
+                        * either signals).
+                        */
+                               <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_down>,
+                       /*
+                        * GPIO3_D5 is routed to VCC_3V3_S3_2 power rail through
+                        * a voltage divider on the adapter.
+                        * It should be HIGH if all is properly soldered.
+                        * To guarantee that, a pull-down is enforced (which is
+                        * the SoC default for this pin) so that LOW is read if
+                        * the loop doesn't exist on HW (soldering issue on
+                        * either signals).
+                        */
+                               <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+};
index 7f457ab..9fceea6 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
                };
        };
 
+       typec-portc@22 {
+               compatible = "fcs,fusb302";
+               reg = <0x22>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cc_int1>;
+               vbus-supply = <&vcc_5v0_usb_c1>;
+
+               connector {
+                       compatible = "usb-c-connector";
+                       data-role = "dual";
+                       label = "USBC-1 P11";
+                       power-role = "source";
+                       self-powered;
+                       source-pdos =
+                               <PDO_FIXED(5000, 1500, PDO_FIXED_DATA_SWAP | PDO_FIXED_USB_COMM)>;
+                       vbus-supply = <&vcc_5v0_usb_c1>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       usbc0_hs: endpoint {
+                                               remote-endpoint = <&usb_host0_xhci_drd_sw>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       usbc0_ss: endpoint {
+                                               remote-endpoint = <&usbdp_phy0_typec_ss>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       usbc0_sbu: endpoint {
+                                               remote-endpoint = <&usbdp_phy0_typec_sbu>;
+                                       };
+                               };
+                       };
+               };
+       };
+
        vdd_npu_s0: regulator@42 {
                compatible = "rockchip,rk8602";
                reg = <0x42>;
        pinctrl-0 = <&i2c8m2_xfer>;
        status = "okay";
 
+       typec-portc@22 {
+               compatible = "fcs,fusb302";
+               reg = <0x22>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <RK_PA4 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cc_int2>;
+               vbus-supply = <&vcc_5v0_usb_c2>;
+
+               connector {
+                       compatible = "usb-c-connector";
+                       data-role = "dual";
+                       label = "USBC-2 P12";
+                       power-role = "source";
+                       self-powered;
+                       source-pdos =
+                               <PDO_FIXED(5000, 1500, PDO_FIXED_DATA_SWAP | PDO_FIXED_USB_COMM)>;
+                       vbus-supply = <&vcc_5v0_usb_c2>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       usbc1_hs: endpoint {
+                                               remote-endpoint = <&usb_host1_xhci_drd_sw>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       usbc1_ss: endpoint {
+                                               remote-endpoint = <&usbdp_phy1_typec_ss>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       usbc1_sbu: endpoint {
+                                               remote-endpoint = <&usbdp_phy1_typec_sbu>;
+                                       };
+                               };
+                       };
+               };
+       };
+
        vdd_cpu_big0_s0: regulator@42 {
                compatible = "rockchip,rk8602";
                reg = <0x42>;
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        emmc {
                emmc_reset: emmc-reset {
                        rockchip,pins = <0 RK_PC7 12 &pcfg_pull_none>;
                };
        };
+
+       usb3 {
+               cc_int1: cc-int1 {
+                       rockchip,pins = <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               cc_int2: cc-int2 {
+                       rockchip,pins = <4 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               typec0_sbu_dc_pins: typec0-sbu-dc-pins {
+                       rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>,
+                                       <1 RK_PC3 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               typec1_sbu_dc_pins: typec1-sbu-dc-pins {
+                       rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_down>,
+                                       <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
 };
 
 &saradc {
        status = "okay";
 };
 
+/* USB-C P11 connector */
+&u2phy0 {
+       status = "okay";
+};
+
+&u2phy0_otg {
+       status = "okay";
+};
+
+/* USB-C P12 connector */
+&u2phy1 {
+       status = "okay";
+};
+
+&u2phy1_otg {
+       status = "okay";
+};
+
 &u2phy2 {
        status = "okay";
 };
        status = "okay";
 };
 
+/* Type-C on P11 */
+&usbdp_phy0 {
+       orientation-switch;
+       pinctrl-names = "default";
+       pinctrl-0 = <&typec0_sbu_dc_pins>;
+       sbu1-dc-gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>; /* Q7_USB_C0_SBU1_DC */
+       sbu2-dc-gpios = <&gpio1 RK_PC3 GPIO_ACTIVE_HIGH>; /* Q7_USB_C0_SBU2_DC */
+       status = "okay";
+
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               usbdp_phy0_typec_ss: endpoint@0 {
+                       reg = <0>;
+                       remote-endpoint = <&usbc0_ss>;
+               };
+
+               usbdp_phy0_typec_sbu: endpoint@1 {
+                       reg = <1>;
+                       remote-endpoint = <&usbc0_sbu>;
+               };
+       };
+};
+
+/* Type-C on P12 */
+&usbdp_phy1 {
+       orientation-switch;
+       pinctrl-names = "default";
+       pinctrl-0 = <&typec1_sbu_dc_pins>;
+       sbu1-dc-gpios = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>; /* Q7_USB_C1_SBU1_DC */
+       sbu2-dc-gpios = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>; /* Q7_USB_C1_SBU2_DC */
+       status = "okay";
+
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               usbdp_phy1_typec_ss: endpoint@0 {
+                       reg = <0>;
+                       remote-endpoint = <&usbc1_ss>;
+               };
+
+               usbdp_phy1_typec_sbu: endpoint@1 {
+                       reg = <1>;
+                       remote-endpoint = <&usbc1_sbu>;
+               };
+       };
+};
+
 /* host0 on P10 USB-A */
 &usb_host0_ehci {
        status = "okay";
        status = "okay";
 };
 
+/* host0 on P11 USB-C */
+&usb_host0_xhci {
+       usb-role-switch;
+       status = "okay";
+
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               usb_host0_xhci_drd_sw: endpoint {
+                       remote-endpoint = <&usbc0_hs>;
+               };
+       };
+};
+
+/* host1 on P12 USB-C */
+&usb_host1_xhci {
+       usb-role-switch;
+       status = "okay";
+
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               usb_host1_xhci_drd_sw: endpoint {
+                       remote-endpoint = <&usbc1_hs>;
+               };
+       };
+};
+
 /* host1 on M.2 E-key */
 &usb_host1_ehci {
        status = "okay";
diff --git a/src/arm64/rockchip/rk3588-mnt-reform2.dts b/src/arm64/rockchip/rk3588-mnt-reform2.dts
new file mode 100644 (file)
index 0000000..78a4e89
--- /dev/null
@@ -0,0 +1,336 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
+ * Copyright (c) 2024 MNT Research GmbH
+ */
+
+/dts-v1/;
+
+#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 "rk3588-firefly-icore-3588q.dtsi"
+
+/ {
+       model = "MNT Reform 2 with RCORE RK3588 Module";
+       compatible = "mntre,reform2-rcore", "firefly,icore-3588q", "rockchip,rk3588";
+       chassis-type = "laptop";
+
+       aliases {
+               ethernet0 = &gmac0;
+               mmc1 = &sdmmc;
+       };
+
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               brightness-levels = <0 8 16 32 64 128 160 200 255>;
+               default-brightness-level = <128>;
+               enable-gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_HIGH>;
+               pwms = <&pwm8 0 10000 0>;
+       };
+
+       gmac0_clkin: external-gmac0-clock {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <125000000>;
+               clock-output-names = "gmac0_clkin";
+       };
+
+       pcie30_avdd1v8: regulator-pcie30-avdd1v8 {
+               compatible = "regulator-fixed";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-name = "pcie30_avdd1v8";
+               vin-supply = <&avcc_1v8_s0>;
+       };
+
+       pcie30_avdd0v75: regulator-pcie30-avdd0v75 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <750000>;
+               regulator-max-microvolt = <750000>;
+               regulator-name = "pcie30_avdd0v75";
+               vin-supply = <&avdd_0v75_s0>;
+       };
+
+       vcc12v_dcin: regulator-vcc12v-dcin {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-name = "vcc12v_dcin";
+       };
+
+       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>;
+       };
+
+       vcc3v3_pcie30: regulator-vcc3v3-pcie30 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "vcc3v3_pcie30";
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_host: regulator-vcc5v0-host {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc5v0_host";
+       };
+
+       vcc5v0_sys: regulator-vcc5v0-sys {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc5v0_sys";
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_usb: regulator-vcc5v0-usb {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "vcc5v0_usb";
+               vin-supply = <&vcc12v_dcin>;
+       };
+};
+
+&combphy0_ps {
+       status = "okay";
+};
+
+&gmac0 {
+       clock_in_out = "output";
+       phy-handle = <&rgmii_phy>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&gmac0_miim
+                    &gmac0_tx_bus2
+                    &gmac0_rx_bus2
+                    &gmac0_rgmii_clk
+                    &gmac0_rgmii_bus
+                    &gmac0_clkinout
+                    &eth_phy_reset>;
+       status = "okay";
+};
+
+&gpu {
+       mali-supply = <&vdd_gpu_s0>;
+       sram-supply = <&vdd_gpu_mem_s0>;
+       status = "okay";
+};
+
+&hdmi0 {
+       status = "okay";
+};
+
+&hdmi0_in {
+       hdmi0_in_vp2: endpoint {
+               remote-endpoint = <&vp2_out_hdmi0>;
+       };
+};
+
+&hdptxphy0 {
+       status = "okay";
+};
+
+&i2c6 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c6m0_xfer>;
+       status = "okay";
+
+       rtc@68 {
+               compatible = "nxp,pcf8523";
+               reg = <0x68>;
+       };
+};
+
+&mdio0 {
+       rgmii_phy: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x0>;
+       };
+};
+
+&pcie2x1l2 {
+       pinctrl-0 = <&pcie2_0_rst>;
+       reset-gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
+
+&pcie30phy {
+       status = "okay";
+};
+
+&pcie3x4 {
+       num-lanes = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie3_reset>;
+       reset-gpios = <&gpio1 RK_PB4 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie30>;
+       status = "okay";
+};
+
+&pinctrl {
+       dp {
+               dp1_hpd: dp1-hpd {
+                       rockchip,pins = <1 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie2 {
+               pcie2_0_rst: pcie2-0-rst {
+                       rockchip,pins = <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie3 {
+               pcie3_reset: pcie3-reset {
+                       rockchip,pins = <1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       eth_phy {
+               eth_phy_reset: eth-phy-reset {
+                       rockchip,pins = <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pwm8 {
+       pinctrl-0 = <&pwm8m2_pins>;
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&avcc_1v8_s0>;
+       status = "okay";
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-sd-highspeed;
+       cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
+       disable-wp;
+       max-frequency = <40000000>;
+       no-1-8-v;
+       no-mmc;
+       no-sdio;
+       vmmc-supply = <&vcc3v3_pcie30>;
+       vqmmc-supply = <&vcc3v3_pcie30>;
+       status = "okay";
+};
+
+&tsadc {
+       status = "okay";
+};
+
+&u2phy0 {
+       status = "okay";
+};
+
+&u2phy0_otg {
+       status = "okay";
+};
+
+&u2phy1 {
+       status = "okay";
+};
+
+&u2phy1_otg {
+       status = "okay";
+};
+
+&u2phy2 {
+       status = "okay";
+};
+
+&u2phy2_host {
+       phy-supply = <&vcc5v0_host>;
+       status = "okay";
+};
+
+&u2phy3 {
+       status = "okay";
+};
+
+&u2phy3_host {
+       phy-supply = <&vcc5v0_host>;
+       status = "okay";
+};
+
+&usbdp_phy0 {
+       status = "okay";
+};
+
+&usbdp_phy1 {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+&usb_host0_xhci {
+       dr_mode = "host";
+       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";
+};
+
+&vp2 {
+       vp2_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+               remote-endpoint = <&hdmi0_in_vp2>;
+       };
+};
index cb35072..bbe500c 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        gpio-leds {
                sys_led_pin: sys-led-pin {
index 1c0851b..fbe1d5c 100644 (file)
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        pcie2 {
                pcie2_0_rst: pcie2-0-rst {
index 87090cb..f748c6f 100644 (file)
@@ -7,9 +7,6 @@
 #include "rk3588-orangepi-5.dtsi"
 
 / {
-       model = "Xunlong Orange Pi 5 Max";
-       compatible = "xunlong,orangepi-5-max", "rockchip,rk3588";
-
        vcc5v0_usb30_otg: vcc5v0-usb30-otg-regulator {
                compatible = "regulator-fixed";
                enable-active-high;
 
 &led_blue_pwm {
        /* PWM_LED1 */
-       pwms = <&pwm4 0 25000 0>;
        status = "okay";
 };
 
-&led_green_pwm {
-       /* PWM_LED2 */
-       pwms = <&pwm5 0 25000 0>;
-};
-
 /* phy2 */
 &pcie2x1l1 {
-       reset-gpios = <&gpio4 RK_PD4 GPIO_ACTIVE_HIGH>;
+       reset-gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_HIGH>;
        vpcie3v3-supply = <&vcc3v3_pcie_eth>;
        status = "okay";
 };
index ce44549..8b1d357 100644 (file)
                        };
                };
        };
+
+       hdmi1-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi1_con_in: endpoint {
+                               remote-endpoint = <&hdmi1_out_con>;
+                       };
+               };
+       };
 };
 
 &hdmi0 {
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdmi0_sound {
+       status = "okay";
+};
+
+&hdmi1 {
+       pinctrl-names = "default";
+       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";
 };
 
+&hdptxphy0 {
+       status = "okay";
+};
+
+&hdptxphy1 {
+       status = "okay";
+};
+
+&i2s5_8ch {
+       status = "okay";
+};
+
+&i2s6_8ch {
+       status = "okay";
+};
+
+&led_blue_pwm {
+       pwms = <&pwm4 0 25000 0>;
+};
+
+&led_green_pwm {
+       pwms = <&pwm5 0 25000 0>;
+};
+
 &pinctrl {
 
        usb {
                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 255e33c..121e4d1 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 = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>;
        status = "okay";
 };
 
+&hdmi0_sound {
+       status = "okay";
+};
+
 &hdmi0_in {
        hdmi0_in_vp0: endpoint {
                remote-endpoint = <&vp0_out_hdmi0>;
        };
 };
 
-&hdptxphy_hdmi0 {
+&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";
 };
 
        };
 };
 
+&i2s5_8ch {
+       status = "okay";
+};
+
+&i2s6_8ch {
+       status = "okay";
+};
+
 &led_blue_gpio {
        gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>;
        status = "okay";
                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-orangepi-5-ultra.dts b/src/arm64/rockchip/rk3588-orangepi-5-ultra.dts
new file mode 100644 (file)
index 0000000..f8c6c08
--- /dev/null
@@ -0,0 +1,83 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
+#include "rk3588-orangepi-5-compact.dtsi"
+
+/ {
+       model = "Xunlong Orange Pi 5 Ultra";
+       compatible = "xunlong,orangepi-5-ultra", "rockchip,rk3588";
+
+       hdmi1-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi1_con_in: endpoint {
+                               remote-endpoint = <&hdmi1_out_con>;
+                       };
+               };
+       };
+};
+
+&hdmi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&hdmim0_tx1_cec &hdmim0_tx1_hpd
+                            &hdmim1_tx1_scl &hdmim1_tx1_sda>;
+       status = "okay";
+};
+
+&hdmi1_in {
+       hdmi1_in_vp0: endpoint {
+               remote-endpoint = <&vp0_out_hdmi1>;
+       };
+};
+
+&hdmi1_out {
+       hdmi1_out_con: endpoint {
+               remote-endpoint = <&hdmi1_con_in>;
+       };
+};
+
+&hdmi1_sound {
+       status = "okay";
+};
+
+&hdptxphy1 {
+       status = "okay";
+};
+
+&i2s6_8ch {
+       status = "okay";
+};
+
+&led_blue_pwm {
+       pwms = <&pwm4 0 25000 PWM_POLARITY_INVERTED>;
+};
+
+&led_green_pwm {
+       pwms = <&pwm5 0 25000 PWM_POLARITY_INVERTED>;
+};
+
+&pinctrl {
+       usb {
+               usb_otg_pwren: usb-otg-pwren {
+                       rockchip,pins = <4 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&vcc5v0_usb30_otg {
+       gpios = <&gpio4 RK_PB1 GPIO_ACTIVE_HIGH>;
+};
+
+&vp0 {
+       vp0_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI1>;
+               remote-endpoint = <&hdmi1_in_vp0>;
+       };
+};
index a98e804..91d56c3 100644 (file)
 
        /* PLDO2 vcca 1.8V, BUCK8 gated by PLDO2 being enabled */
        es8388: audio-codec@11 {
-               compatible = "everest,es8388";
+               compatible = "everest,es8388", "everest,es8328";
                reg = <0x11>;
                clocks = <&cru I2S0_8CH_MCLKOUT>;
                AVDD-supply = <&vcc_3v3_s0>;
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &saradc {
        vref-supply = <&vcc_1v8_s0>;
        status = "okay";
index 088cfad..78aaa66 100644 (file)
        status = "okay";
 
        es8388: audio-codec@11 {
-               compatible = "everest,es8388";
+               compatible = "everest,es8388", "everest,es8328";
                reg = <0x11>;
                assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
                assigned-clock-rates = <12288000>;
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        hym8563 {
                hym8563_int: hym8563-int {
index 2a05902..7de1711 100644 (file)
@@ -11,6 +11,7 @@
 #include <dt-bindings/leds/common.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 "rk3588.dtsi"
 
                };
        };
 
+       hdmi1-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi1_con_in: endpoint {
+                               remote-endpoint = <&hdmi1_out_con>;
+                       };
+               };
+       };
+
        /* Unnamed gated oscillator: 100MHz,3.3V,3225 */
        pcie30_port0_refclk: pcie30_port1_refclk: pcie-oscillator {
                compatible = "gated-fixed-clock";
        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>;
+       };
+};
+
+&hdptxphy1 {
+       status = "okay";
+};
+
 &i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c0m2_xfer>;
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        hym8563 {
                rtc_int: rtc-int {
        rockchip,dp-lane-mux = <2 3>;
        status = "okay";
 };
+
+&vop {
+       status = "okay";
+};
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vp1 {
+       vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI1>;
+               remote-endpoint = <&hdmi1_in_vp1>;
+       };
+};
index d597112..d220684 100644 (file)
                };
        };
 
+       hdmi1-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi1_con_in: endpoint {
+                               remote-endpoint = <&hdmi1_out_con>;
+                       };
+               };
+       };
+
        leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
        };
 };
 
-&hdptxphy_hdmi0 {
+&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";
 };
 
        };
 };
 
+&i2s5_8ch {
+       status = "okay";
+};
+
+&i2s6_8ch {
+       status = "okay";
+};
+
 &package_thermal {
        polling-delay = <1000>;
 
        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>;
        status = "okay";
 };
 
-&vop_mmu {
+&vop {
        status = "okay";
 };
 
-&vop {
+&vop_mmu {
        status = "okay";
 };
 
                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 3187b49..a3d8ff6 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
        status = "okay";
 };
 
+/* DB9 RS232/RS485 when SW2 in "UART1" mode */
 &uart5 {
        rts-gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_HIGH>;
+       status = "okay";
 };
 
 &usbdp_phy0 {
index e8fa449..c4933a0 100644 (file)
 
 &i2c2 {
        pinctrl-0 = <&i2c2m3_xfer>;
-       status = "okay";
 };
 
 &i2c2m3_xfer {
        reset-gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_HIGH>;
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        emmc {
                emmc_reset: emmc-reset {
index 3cbee5b..5a428e0 100644 (file)
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        rtl8211f {
                rtl8211f_rst: rtl8211f-rst {
index 6bc4673..60ad272 100644 (file)
 };
 
 &package_thermal {
+       polling-delay = <1000>;
+
        trips {
                package_active1: trip-active1 {
                        temperature = <45000>;
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        fan {
                fan_int: fan-int {
index bce72ba..3045cb3 100644 (file)
                compatible = "operating-points-v2";
                opp-shared;
 
-               opp-1416000000 {
-                       opp-hz = /bits/ 64 <1416000000>;
+               opp-1200000000 {
+                       opp-hz = /bits/ 64 <1200000000>;
                        opp-microvolt = <750000 750000 950000>;
                        clock-latency-ns = <40000>;
                        opp-suspend;
                };
-               opp-1608000000 {
-                       opp-hz = /bits/ 64 <1608000000>;
-                       opp-microvolt = <887500 887500 950000>;
-                       clock-latency-ns = <40000>;
-               };
-               opp-1704000000 {
-                       opp-hz = /bits/ 64 <1704000000>;
-                       opp-microvolt = <937500 937500 950000>;
+               opp-1296000000 {
+                       opp-hz = /bits/ 64 <1296000000>;
+                       opp-microvolt = <775000 775000 950000>;
                        clock-latency-ns = <40000>;
                };
        };
                compatible = "operating-points-v2";
                opp-shared;
 
+               opp-1200000000{
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <750000 750000 950000>;
+                       clock-latency-ns = <40000>;
+               };
                opp-1416000000 {
                        opp-hz = /bits/ 64 <1416000000>;
-                       opp-microvolt = <750000 750000 950000>;
+                       opp-microvolt = <762500 762500 950000>;
                        clock-latency-ns = <40000>;
                };
                opp-1608000000 {
                        opp-microvolt = <787500 787500 950000>;
                        clock-latency-ns = <40000>;
                };
-               opp-1800000000 {
-                       opp-hz = /bits/ 64 <1800000000>;
-                       opp-microvolt = <875000 875000 950000>;
-                       clock-latency-ns = <40000>;
-               };
-               opp-2016000000 {
-                       opp-hz = /bits/ 64 <2016000000>;
-                       opp-microvolt = <950000 950000 950000>;
-                       clock-latency-ns = <40000>;
-               };
        };
 
        cluster2_opp_table: opp-table-cluster2 {
                compatible = "operating-points-v2";
                opp-shared;
 
+               opp-1200000000{
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <750000 750000 950000>;
+                       clock-latency-ns = <40000>;
+               };
                opp-1416000000 {
                        opp-hz = /bits/ 64 <1416000000>;
-                       opp-microvolt = <750000 750000 950000>;
+                       opp-microvolt = <762500 762500 950000>;
                        clock-latency-ns = <40000>;
                };
                opp-1608000000 {
                        opp-microvolt = <787500 787500 950000>;
                        clock-latency-ns = <40000>;
                };
-               opp-1800000000 {
-                       opp-hz = /bits/ 64 <1800000000>;
-                       opp-microvolt = <875000 875000 950000>;
-                       clock-latency-ns = <40000>;
-               };
-               opp-2016000000 {
-                       opp-hz = /bits/ 64 <2016000000>;
-                       opp-microvolt = <950000 950000 950000>;
-                       clock-latency-ns = <40000>;
-               };
        };
 
        gpu_opp_table: opp-table {
                        opp-hz = /bits/ 64 <700000000>;
                        opp-microvolt = <750000 750000 850000>;
                };
-               opp-850000000 {
-                       opp-hz = /bits/ 64 <800000000>;
-                       opp-microvolt = <787500 787500 850000>;
-               };
        };
 };
 
index 9c394f7..8b717c4 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        hym8563 {
                hym8563_int: hym8563-int {
 };
 
 &pwm13 {
-       pinctrl-names = "active";
+       pinctrl-names = "default";
        pinctrl-0 = <&pwm13m2_pins>;
        status = "okay";
 };
        status = "okay";
 };
 
+&u2phy0 {
+       status = "okay";
+};
+
+&u2phy0_otg {
+       status = "okay";
+};
+
 &u2phy2 {
        status = "okay";
 };
        pinctrl-0 = <&uart9m2_xfer &uart9m2_ctsn>;
 };
 
+&usbdp_phy0 {
+       /*
+        * USBDP PHY0 is wired to a USB3 Type-A OTG connector. Additionally
+        * the differential pairs 0+1 and the aux channel are wired to a
+        * mini DP connector.
+        */
+       rockchip,dp-lane-mux = <0 1>;
+       status = "okay";
+};
+
 &usb_host0_ehci {
        status = "okay";
 };
        status = "okay";
 };
 
+&usb_host0_xhci {
+       extcon = <&u2phy0>;
+       status = "okay";
+};
+
 &usb_host1_ehci {
        status = "okay";
 };
index bc40775..9f4aca9 100644 (file)
        status = "okay";
 
        es8388: audio-codec@11 {
-               compatible = "everest,es8388";
+               compatible = "everest,es8388", "everest,es8328";
                reg = <0x11>;
                clocks = <&cru I2S0_8CH_MCLKOUT>;
                assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        audio {
                hp_detect: headphone-detect {
index 812bba0..873a2bd 100644 (file)
        status = "okay";
 
        es8388: audio-codec@11 {
-               compatible = "everest,es8388";
+               compatible = "everest,es8388", "everest,es8328";
                reg = <0x11>;
                assigned-clock-rates = <12288000>;
                assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        audio-amplifier {
                headphone_amplifier_en: headphone-amplifier-en {
index 4a3aa80..4189a88 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
        status = "okay";
 
        es8388: audio-codec@11 {
-               compatible = "everest,es8388";
+               compatible = "everest,es8388", "everest,es8328";
                reg = <0x11>;
                assigned-clock-rates = <12288000>;
                assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        bluetooth-pins {
                bt_reset: bt-reset {
index ac48e7f..88a5e82 100644 (file)
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        vdd_sd {
                vdd_sd_en: vdd-sd-en {
index d2eddea..fbf062e 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        gpio-key {
                key1_pin: key1-pin {
index 8f034c6..a72063c 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        lcd {
                lcd_pwren: lcd-pwren {
index d86aeac..4fedc50 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdmi0_sound {
+       status = "okay";
+};
+
+&hdptxphy0 {
        status = "okay";
 };
 
        status = "okay";
 
        es8388: audio-codec@10 {
-               compatible = "everest,es8388";
+               compatible = "everest,es8388", "everest,es8328";
                reg = <0x10>;
                clocks = <&cru I2S1_8CH_MCLKOUT>;
                AVDD-supply = <&vcc_3v3_s0>;
        status = "okay";
 };
 
+&i2s5_8ch {
+       status = "okay";
+};
+
 &mdio1 {
        rgmii_phy1: ethernet-phy@1 {
                compatible = "ethernet-phy-ieee802.3-c22";
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        hym8563 {
                hym8563_int: hym8563-int {
index 70a4343..f894742 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        leds {
                io_led: io-led {
index 9b14d53..dd7317b 100644 (file)
                };
        };
 
-       fan {
+       fan: fan {
                compatible = "pwm-fan";
                #cooling-cells = <2>;
-               cooling-levels = <0 64 128 192 255>;
+               cooling-levels = <0 24 44 64 128 192 255>;
                fan-supply = <&vcc_5v0>;
                pwms = <&pwm3 0 10000 0>;
        };
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        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>;
+               };
+       };
+};
+
 &pcie2x1l2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pcie20x1_2_perstn_m0>;
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        leds {
                led_pins: led-pins {
 };
 
 &tsadc {
+       rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
+       rockchip,hw-tshut-polarity = <0>; /* tshut polarity 0:LOW 1:HIGH */
        status = "okay";
 };
 
diff --git a/src/arm64/st/stm32mp211.dtsi b/src/arm64/st/stm32mp211.dtsi
new file mode 100644 (file)
index 0000000..bf888d6
--- /dev/null
@@ -0,0 +1,128 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       compatible = "arm,cortex-a35";
+                       reg = <0>;
+                       device_type = "cpu";
+                       enable-method = "psci";
+               };
+       };
+
+       arm-pmu {
+               compatible = "arm,cortex-a35-pmu";
+               interrupts = <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>;
+               interrupt-parent = <&intc>;
+       };
+
+       arm_wdt: watchdog {
+               compatible = "arm,smc-wdt";
+               arm,smc-id = <0xbc000000>;
+               status = "disabled";
+       };
+
+       ck_flexgen_08: clock-64000000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <64000000>;
+       };
+
+       ck_flexgen_51: clock-200000000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <200000000>;
+       };
+
+       firmware {
+               optee {
+                       compatible = "linaro,optee-tz";
+                       method = "smc";
+               };
+
+               scmi: scmi {
+                       compatible = "linaro,scmi-optee";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       linaro,optee-channel-id = <0>;
+
+                       scmi_clk: protocol@14 {
+                               reg = <0x14>;
+                               #clock-cells = <1>;
+                       };
+
+                       scmi_reset: protocol@16 {
+                               reg = <0x16>;
+                               #reset-cells = <1>;
+                       };
+               };
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupt-parent = <&intc>;
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
+               arm,no-tick-in-suspend;
+       };
+
+       soc@0 {
+               compatible = "simple-bus";
+               ranges = <0x0 0x0 0x0 0x0 0x80000000>;
+               dma-ranges = <0x0 0x0 0x80000000 0x1 0x0>;
+               interrupt-parent = <&intc>;
+               #address-cells = <1>;
+               #size-cells = <2>;
+
+               rifsc: bus@42080000 {
+                       compatible = "simple-bus";
+                       reg = <0x42080000 0x0 0x1000>;
+                       ranges;
+                       dma-ranges;
+                       #address-cells = <1>;
+                       #size-cells = <2>;
+
+                       usart2: serial@400e0000 {
+                               compatible = "st,stm32h7-uart";
+                               reg = <0x400e0000 0x0 0x400>;
+                               interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&ck_flexgen_08>;
+                               status = "disabled";
+                       };
+               };
+
+               syscfg: syscon@44230000 {
+                       compatible = "st,stm32mp21-syscfg", "syscon";
+                       reg = <0x44230000 0x0 0x10000>;
+               };
+
+               intc: interrupt-controller@4ac10000 {
+                       compatible = "arm,gic-400";
+                       reg = <0x4ac10000 0x0 0x1000>,
+                             <0x4ac20000 0x0 0x20000>,
+                             <0x4ac40000 0x0 0x20000>,
+                             <0x4ac60000 0x0 0x20000>;
+                             #interrupt-cells = <3>;
+                             interrupt-controller;
+               };
+       };
+};
diff --git a/src/arm64/st/stm32mp213.dtsi b/src/arm64/st/stm32mp213.dtsi
new file mode 100644 (file)
index 0000000..fdd2dc4
--- /dev/null
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+#include "stm32mp211.dtsi"
+
+/ {
+};
diff --git a/src/arm64/st/stm32mp215.dtsi b/src/arm64/st/stm32mp215.dtsi
new file mode 100644 (file)
index 0000000..a7df77f
--- /dev/null
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+#include "stm32mp213.dtsi"
+
+/ {
+};
diff --git a/src/arm64/st/stm32mp215f-dk.dts b/src/arm64/st/stm32mp215f-dk.dts
new file mode 100644 (file)
index 0000000..7bdaeaa
--- /dev/null
@@ -0,0 +1,49 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Amelie Delaunay <amelie.delaunay@foss.st.com> for STMicroelectronics.
+ */
+
+/dts-v1/;
+
+#include "stm32mp215.dtsi"
+#include "stm32mp21xf.dtsi"
+
+/ {
+       model = "STMicroelectronics STM32MP215F-DK Discovery Board";
+       compatible = "st,stm32mp215f-dk", "st,stm32mp215";
+
+       aliases {
+               serial0 = &usart2;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x0 0x80000000 0x0 0x80000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               fw@80000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0x80000000 0x0 0x4000000>;
+                       no-map;
+               };
+       };
+};
+
+&arm_wdt {
+       timeout-sec = <32>;
+       status = "okay";
+};
+
+&usart2 {
+       status = "okay";
+};
diff --git a/src/arm64/st/stm32mp21xc.dtsi b/src/arm64/st/stm32mp21xc.dtsi
new file mode 100644 (file)
index 0000000..e33b00b
--- /dev/null
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+
+/ {
+};
diff --git a/src/arm64/st/stm32mp21xf.dtsi b/src/arm64/st/stm32mp21xf.dtsi
new file mode 100644 (file)
index 0000000..e33b00b
--- /dev/null
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+
+/ {
+};
diff --git a/src/arm64/st/stm32mp231.dtsi b/src/arm64/st/stm32mp231.dtsi
new file mode 100644 (file)
index 0000000..75697ac
--- /dev/null
@@ -0,0 +1,1213 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+#include <dt-bindings/clock/st,stm32mp25-rcc.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/regulator/st,stm32mp25-regulator.h>
+#include <dt-bindings/reset/st,stm32mp25-rcc.h>
+
+/ {
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       compatible = "arm,cortex-a35";
+                       reg = <0>;
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       power-domains = <&cpu0_pd>;
+                       power-domain-names = "psci";
+               };
+       };
+
+       arm-pmu {
+               compatible = "arm,cortex-a35-pmu";
+               interrupts = <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>;
+               interrupt-parent = <&intc>;
+       };
+
+       arm_wdt: watchdog {
+               compatible = "arm,smc-wdt";
+               arm,smc-id = <0xb200005a>;
+               status = "disabled";
+       };
+
+       clk_dsi_txbyte: clock-0 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
+       clk_rcbsec: clk-64000000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <64000000>;
+       };
+
+       firmware {
+               optee: optee {
+                       compatible = "linaro,optee-tz";
+                       method = "smc";
+                       interrupt-parent = <&intc>;
+                       interrupts = <GIC_PPI 15 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
+               };
+
+               scmi {
+                       compatible = "linaro,scmi-optee";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       linaro,optee-channel-id = <0>;
+
+                       scmi_clk: protocol@14 {
+                               reg = <0x14>;
+                               #clock-cells = <1>;
+                       };
+
+                       scmi_reset: protocol@16 {
+                               reg = <0x16>;
+                               #reset-cells = <1>;
+                       };
+
+                       scmi_voltd: protocol@17 {
+                               reg = <0x17>;
+
+                               scmi_regu: regulators {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       scmi_vddio1: regulator@0 {
+                                               reg = <VOLTD_SCMI_VDDIO1>;
+                                               regulator-name = "vddio1";
+                                       };
+                                       scmi_vddio2: regulator@1 {
+                                               reg = <VOLTD_SCMI_VDDIO2>;
+                                               regulator-name = "vddio2";
+                                       };
+                                       scmi_vddio3: regulator@2 {
+                                               reg = <VOLTD_SCMI_VDDIO3>;
+                                               regulator-name = "vddio3";
+                                       };
+                                       scmi_vddio4: regulator@3 {
+                                               reg = <VOLTD_SCMI_VDDIO4>;
+                                               regulator-name = "vddio4";
+                                       };
+                                       scmi_vdd33ucpd: regulator@5 {
+                                               reg = <VOLTD_SCMI_UCPD>;
+                                               regulator-name = "vdd33ucpd";
+                                       };
+                                       scmi_vdda18adc: regulator@7 {
+                                               reg = <VOLTD_SCMI_ADC>;
+                                               regulator-name = "vdda18adc";
+                                       };
+                               };
+                       };
+               };
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+
+               cpu0_pd: power-domain-cpu0 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&cluster_pd>;
+               };
+
+               cluster_pd: power-domain-cluster {
+                       #power-domain-cells = <0>;
+                       power-domains = <&ret_pd>;
+               };
+
+               ret_pd: power-domain-retention {
+                       #power-domain-cells = <0>;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupt-parent = <&intc>;
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
+               always-on;
+       };
+
+       soc@0 {
+               compatible = "simple-bus";
+               ranges = <0x0 0x0 0x0 0x80000000>;
+               interrupt-parent = <&intc>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               hpdma: dma-controller@40400000 {
+                       compatible = "st,stm32mp25-dma3";
+                       reg = <0x40400000 0x1000>;
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&scmi_clk CK_SCMI_HPDMA1>;
+                       #dma-cells = <3>;
+               };
+
+               hpdma2: dma-controller@40410000 {
+                       compatible = "st,stm32mp25-dma3";
+                       reg = <0x40410000 0x1000>;
+                       interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&scmi_clk CK_SCMI_HPDMA2>;
+                       #dma-cells = <3>;
+               };
+
+               hpdma3: dma-controller@40420000 {
+                       compatible = "st,stm32mp25-dma3";
+                       reg = <0x40420000 0x1000>;
+                       interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&scmi_clk CK_SCMI_HPDMA3>;
+                       #dma-cells = <3>;
+               };
+
+               rifsc: bus@42080000 {
+                       compatible = "st,stm32mp25-rifsc", "simple-bus";
+                       reg = <0x42080000 0x1000>;
+                       ranges;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       #access-controller-cells = <1>;
+
+                       i2s2: audio-controller@400b0000 {
+                               compatible = "st,stm32mp25-i2s";
+                               reg = <0x400b0000 0x400>;
+                               #sound-dai-cells = <0>;
+                               interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_BUS_SPI2>, <&rcc CK_KER_SPI2>;
+                               clock-names = "pclk", "i2sclk";
+                               resets = <&rcc SPI2_R>;
+                               dmas = <&hpdma 51 0x43 0x12>,
+                                      <&hpdma 52 0x43 0x21>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 23>;
+                               status = "disabled";
+                       };
+
+                       spi2: spi@400b0000 {
+                               compatible = "st,stm32mp25-spi";
+                               reg = <0x400b0000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_SPI2>;
+                               resets = <&rcc SPI2_R>;
+                               dmas = <&hpdma 51 0x20 0x3012>,
+                                      <&hpdma 52 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 23>;
+                               status = "disabled";
+                       };
+
+                       i2s3: audio-controller@400c0000 {
+                               compatible = "st,stm32mp25-i2s";
+                               reg = <0x400c0000 0x400>;
+                               #sound-dai-cells = <0>;
+                               interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_BUS_SPI3>, <&rcc CK_KER_SPI3>;
+                               clock-names = "pclk", "i2sclk";
+                               resets = <&rcc SPI3_R>;
+                               dmas = <&hpdma 53 0x43 0x12>,
+                                      <&hpdma 54 0x43 0x21>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 24>;
+                               status = "disabled";
+                       };
+
+                       spi3: spi@400c0000 {
+                               compatible = "st,stm32mp25-spi";
+                               reg = <0x400c0000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_SPI3>;
+                               resets = <&rcc SPI3_R>;
+                               dmas = <&hpdma 53 0x20 0x3012>,
+                                      <&hpdma 54 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 24>;
+                               status = "disabled";
+                       };
+
+                       spdifrx: audio-controller@400d0000 {
+                               compatible = "st,stm32h7-spdifrx";
+                               reg = <0x400d0000 0x400>;
+                               #sound-dai-cells = <0>;
+                               clocks = <&rcc CK_KER_SPDIFRX>;
+                               clock-names = "kclk";
+                               interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&hpdma 71 0x43 0x212>,
+                                      <&hpdma 72 0x43 0x212>;
+                               dma-names = "rx", "rx-ctrl";
+                               access-controllers = <&rifsc 30>;
+                               status = "disabled";
+                       };
+
+                       usart2: serial@400e0000 {
+                               compatible = "st,stm32h7-uart";
+                               reg = <0x400e0000 0x400>;
+                               interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_USART2>;
+                               dmas = <&hpdma 11 0x20 0x10012>,
+                                      <&hpdma 12 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 32>;
+                               status = "disabled";
+                       };
+
+                       usart3: serial@400f0000 {
+                               compatible = "st,stm32h7-uart";
+                               reg = <0x400f0000 0x400>;
+                               interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_USART3>;
+                               dmas = <&hpdma 13 0x20 0x10012>,
+                                      <&hpdma 14 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 33>;
+                               status = "disabled";
+                       };
+
+                       uart4: serial@40100000 {
+                               compatible = "st,stm32h7-uart";
+                               reg = <0x40100000 0x400>;
+                               interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_UART4>;
+                               dmas = <&hpdma 15 0x20 0x10012>,
+                                      <&hpdma 16 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 34>;
+                               status = "disabled";
+                       };
+
+                       uart5: serial@40110000 {
+                               compatible = "st,stm32h7-uart";
+                               reg = <0x40110000 0x400>;
+                               interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_UART5>;
+                               dmas = <&hpdma 17 0x20 0x10012>,
+                                      <&hpdma 18 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 35>;
+                               status = "disabled";
+                       };
+
+                       i2c1: i2c@40120000 {
+                               compatible = "st,stm32mp25-i2c";
+                               reg = <0x40120000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupt-names = "event";
+                               interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_I2C1>;
+                               resets = <&rcc I2C1_R>;
+                               dmas = <&hpdma 27 0x20 0x3012>,
+                                      <&hpdma 28 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 41>;
+                               status = "disabled";
+                       };
+
+                       i2c2: i2c@40130000 {
+                               compatible = "st,stm32mp25-i2c";
+                               reg = <0x40130000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupt-names = "event";
+                               interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_I2C2>;
+                               resets = <&rcc I2C2_R>;
+                               dmas = <&hpdma 30 0x20 0x3012>,
+                                      <&hpdma 31 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 42>;
+                               status = "disabled";
+                       };
+
+                       i2c7: i2c@40180000 {
+                               compatible = "st,stm32mp25-i2c";
+                               reg = <0x40180000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupt-names = "event";
+                               interrupts = <GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_I2C7>;
+                               resets = <&rcc I2C7_R>;
+                               dmas = <&hpdma 45 0x20 0x3012>,
+                                      <&hpdma 46 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 47>;
+                               status = "disabled";
+                       };
+
+                       usart6: serial@40220000 {
+                               compatible = "st,stm32h7-uart";
+                               reg = <0x40220000 0x400>;
+                               interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_USART6>;
+                               dmas = <&hpdma 19 0x20 0x10012>,
+                                      <&hpdma 20 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 36>;
+                               status = "disabled";
+                       };
+
+                       i2s1: audio-controller@40230000 {
+                               compatible = "st,stm32mp25-i2s";
+                               reg = <0x40230000 0x400>;
+                               #sound-dai-cells = <0>;
+                               interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_BUS_SPI1>, <&rcc CK_KER_SPI1>;
+                               clock-names = "pclk", "i2sclk";
+                               resets = <&rcc SPI1_R>;
+                               dmas = <&hpdma 49 0x43 0x12>,
+                                      <&hpdma 50 0x43 0x21>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 22>;
+                               status = "disabled";
+                       };
+
+                       spi1: spi@40230000 {
+                               compatible = "st,stm32mp25-spi";
+                               reg = <0x40230000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_SPI1>;
+                               resets = <&rcc SPI1_R>;
+                               dmas = <&hpdma 49 0x20 0x3012>,
+                                      <&hpdma 50 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 22>;
+                               status = "disabled";
+                       };
+
+                       spi4: spi@40240000 {
+                               compatible = "st,stm32mp25-spi";
+                               reg = <0x40240000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_SPI4>;
+                               resets = <&rcc SPI4_R>;
+                               dmas = <&hpdma 55 0x20 0x3012>,
+                                      <&hpdma 56 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 25>;
+                               status = "disabled";
+                       };
+
+                       spi5: spi@40280000 {
+                               compatible = "st,stm32mp25-spi";
+                               reg = <0x40280000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_SPI5>;
+                               resets = <&rcc SPI5_R>;
+                               dmas = <&hpdma 57 0x20 0x3012>,
+                                      <&hpdma 58 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 26>;
+                               status = "disabled";
+                       };
+
+                       sai1: sai@40290000 {
+                               compatible = "st,stm32mp25-sai";
+                               reg = <0x40290000 0x4>, <0x4029a3f0 0x10>;
+                               ranges = <0 0x40290000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               clocks = <&rcc CK_BUS_SAI1>;
+                               clock-names = "pclk";
+                               interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
+                               resets = <&rcc SAI1_R>;
+                               access-controllers = <&rifsc 49>;
+                               status = "disabled";
+
+                               sai1a: audio-controller@40290004 {
+                                       compatible = "st,stm32-sai-sub-a";
+                                       reg = <0x4 0x20>;
+                                       #sound-dai-cells = <0>;
+                                       clocks = <&rcc CK_KER_SAI1>;
+                                       clock-names = "sai_ck";
+                                       dmas = <&hpdma 73 0x43 0x21>;
+                                       status = "disabled";
+                               };
+
+                               sai1b: audio-controller@40290024 {
+                                       compatible = "st,stm32-sai-sub-b";
+                                       reg = <0x24 0x20>;
+                                       #sound-dai-cells = <0>;
+                                       clocks = <&rcc CK_KER_SAI1>;
+                                       clock-names = "sai_ck";
+                                       dmas = <&hpdma 74 0x43 0x12>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       sai2: sai@402a0000 {
+                               compatible = "st,stm32mp25-sai";
+                               reg = <0x402a0000 0x4>, <0x402aa3f0 0x10>;
+                               ranges = <0 0x402a0000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               clocks = <&rcc CK_BUS_SAI2>;
+                               clock-names = "pclk";
+                               interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
+                               resets = <&rcc SAI2_R>;
+                               access-controllers = <&rifsc 50>;
+                               status = "disabled";
+
+                               sai2a: audio-controller@402a0004 {
+                                       compatible = "st,stm32-sai-sub-a";
+                                       reg = <0x4 0x20>;
+                                       #sound-dai-cells = <0>;
+                                       clocks = <&rcc CK_KER_SAI2>;
+                                       clock-names = "sai_ck";
+                                       dmas = <&hpdma 75 0x43 0x21>;
+                                       status = "disabled";
+                               };
+
+                               sai2b: audio-controller@402a0024 {
+                                       compatible = "st,stm32-sai-sub-b";
+                                       reg = <0x24 0x20>;
+                                       #sound-dai-cells = <0>;
+                                       clocks = <&rcc CK_KER_SAI2>;
+                                       clock-names = "sai_ck";
+                                       dmas = <&hpdma 76 0x43 0x12>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       sai3: sai@402b0000 {
+                               compatible = "st,stm32mp25-sai";
+                               reg = <0x402b0000 0x4>, <0x402ba3f0 0x10>;
+                               ranges = <0 0x402b0000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               clocks = <&rcc CK_BUS_SAI3>;
+                               clock-names = "pclk";
+                               interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
+                               resets = <&rcc SAI3_R>;
+                               access-controllers = <&rifsc 51>;
+                               status = "disabled";
+
+                               sai3a: audio-controller@402b0004 {
+                                       compatible = "st,stm32-sai-sub-a";
+                                       reg = <0x4 0x20>;
+                                       #sound-dai-cells = <0>;
+                                       clocks = <&rcc CK_KER_SAI3>;
+                                       clock-names = "sai_ck";
+                                       dmas = <&hpdma 77 0x43 0x21>;
+                                       status = "disabled";
+                               };
+
+                               sai3b: audio-controller@502b0024 {
+                                       compatible = "st,stm32-sai-sub-b";
+                                       reg = <0x24 0x20>;
+                                       #sound-dai-cells = <0>;
+                                       clocks = <&rcc CK_KER_SAI3>;
+                                       clock-names = "sai_ck";
+                                       dmas = <&hpdma 78 0x43 0x12>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       usart1: serial@40330000 {
+                               compatible = "st,stm32h7-uart";
+                               reg = <0x40330000 0x400>;
+                               interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_USART1>;
+                               dmas = <&hpdma 9 0x20 0x10012>,
+                                      <&hpdma 10 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 31>;
+                               status = "disabled";
+                       };
+
+                       sai4: sai@40340000 {
+                               compatible = "st,stm32mp25-sai";
+                               reg = <0x40340000 0x4>, <0x4034a3f0 0x10>;
+                               ranges = <0 0x40340000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               clocks = <&rcc CK_BUS_SAI4>;
+                               clock-names = "pclk";
+                               interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
+                               resets = <&rcc SAI4_R>;
+                               access-controllers = <&rifsc 52>;
+                               status = "disabled";
+
+                               sai4a: audio-controller@40340004 {
+                                       compatible = "st,stm32-sai-sub-a";
+                                       reg = <0x4 0x20>;
+                                       #sound-dai-cells = <0>;
+                                       clocks = <&rcc CK_KER_SAI4>;
+                                       clock-names = "sai_ck";
+                                       dmas = <&hpdma 79 0x63 0x21>;
+                                       status = "disabled";
+                               };
+
+                               sai4b: audio-controller@40340024 {
+                                       compatible = "st,stm32-sai-sub-b";
+                                       reg = <0x24 0x20>;
+                                       #sound-dai-cells = <0>;
+                                       clocks = <&rcc CK_KER_SAI4>;
+                                       clock-names = "sai_ck";
+                                       dmas = <&hpdma 80 0x43 0x12>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       uart7: serial@40370000 {
+                               compatible = "st,stm32h7-uart";
+                               reg = <0x40370000 0x400>;
+                               interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_UART7>;
+                               dmas = <&hpdma 21 0x20 0x10012>,
+                                      <&hpdma 22 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 37>;
+                               status = "disabled";
+                       };
+
+                       rng: rng@42020000 {
+                               compatible = "st,stm32mp25-rng";
+                               reg = <0x42020000 0x400>;
+                               clocks = <&clk_rcbsec>, <&rcc CK_BUS_RNG>;
+                               clock-names = "core", "bus";
+                               resets = <&rcc RNG_R>;
+                               access-controllers = <&rifsc 92>;
+                               status = "disabled";
+                       };
+
+                       spi8: spi@46020000 {
+                               compatible = "st,stm32mp25-spi";
+                               reg = <0x46020000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_SPI8>;
+                               resets = <&rcc SPI8_R>;
+                               dmas = <&hpdma 171 0x20 0x3012>,
+                                      <&hpdma 172 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 29>;
+                               status = "disabled";
+                       };
+
+                       i2c8: i2c@46040000 {
+                               compatible = "st,stm32mp25-i2c";
+                               reg = <0x46040000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupt-names = "event";
+                               interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_I2C8>;
+                               resets = <&rcc I2C8_R>;
+                               dmas = <&hpdma 168 0x20 0x3012>,
+                                      <&hpdma 169 0x20 0x3021>;
+                               dma-names = "rx", "tx";
+                               access-controllers = <&rifsc 48>;
+                               status = "disabled";
+                       };
+
+                       csi: csi@48020000 {
+                               compatible = "st,stm32mp25-csi";
+                               reg = <0x48020000 0x2000>;
+                               interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>;
+                               resets = <&rcc CSI_R>;
+                               clocks = <&rcc CK_KER_CSI>, <&rcc CK_KER_CSITXESC>,
+                                        <&rcc CK_KER_CSIPHY>;
+                               clock-names = "pclk", "txesc", "csi2phy";
+                               access-controllers = <&rifsc 86>;
+                               status = "disabled";
+                       };
+
+                       dcmipp: dcmipp@48030000 {
+                               compatible = "st,stm32mp25-dcmipp";
+                               reg = <0x48030000 0x1000>;
+                               interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>;
+                               resets = <&rcc DCMIPP_R>;
+                               clocks = <&rcc CK_BUS_DCMIPP>, <&rcc CK_KER_CSI>;
+                               clock-names = "kclk", "mclk";
+                               access-controllers = <&rifsc 87>;
+                               status = "disabled";
+                       };
+
+                       sdmmc1: mmc@48220000 {
+                               compatible = "st,stm32mp25-sdmmc2", "arm,pl18x", "arm,primecell";
+                               reg = <0x48220000 0x400>, <0x44230400 0x8>;
+                               arm,primecell-periphid = <0x00353180>;
+                               interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_SDMMC1 >;
+                               clock-names = "apb_pclk";
+                               resets = <&rcc SDMMC1_R>;
+                               cap-sd-highspeed;
+                               cap-mmc-highspeed;
+                               max-frequency = <120000000>;
+                               access-controllers = <&rifsc 76>;
+                               status = "disabled";
+                       };
+
+                       ethernet1: ethernet@482c0000 {
+                               compatible = "st,stm32mp25-dwmac", "snps,dwmac-5.20";
+                               reg = <0x482c0000 0x4000>;
+                               reg-names = "stmmaceth";
+                               interrupts-extended = <&intc GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "macirq";
+                               clock-names = "stmmaceth",
+                                             "mac-clk-tx",
+                                             "mac-clk-rx",
+                                             "ptp_ref",
+                                             "ethstp",
+                                             "eth-ck";
+                               clocks = <&rcc CK_ETH1_MAC>,
+                                        <&rcc CK_ETH1_TX>,
+                                        <&rcc CK_ETH1_RX>,
+                                        <&rcc CK_KER_ETH1PTP>,
+                                        <&rcc CK_ETH1_STP>,
+                                        <&rcc CK_KER_ETH1>;
+                               snps,axi-config = <&stmmac_axi_config_1>;
+                               snps,mixed-burst;
+                               snps,mtl-rx-config = <&mtl_rx_setup_1>;
+                               snps,mtl-tx-config = <&mtl_tx_setup_1>;
+                               snps,pbl = <2>;
+                               snps,tso;
+                               st,syscon = <&syscfg 0x3000>;
+                               access-controllers = <&rifsc 60>;
+                               status = "disabled";
+
+                               mtl_rx_setup_1: rx-queues-config {
+                                       snps,rx-queues-to-use = <2>;
+                                       queue0 {};
+                                       queue1 {};
+                               };
+
+                               mtl_tx_setup_1: tx-queues-config {
+                                       snps,tx-queues-to-use = <4>;
+                                       queue0 {};
+                                       queue1 {};
+                                       queue2 {};
+                                       queue3 {};
+                               };
+
+                               stmmac_axi_config_1: stmmac-axi-config {
+                                       snps,blen = <0 0 0 0 16 8 4>;
+                                       snps,rd_osr_lmt = <0x7>;
+                                       snps,wr_osr_lmt = <0x7>;
+                               };
+                       };
+               };
+
+               bsec: efuse@44000000 {
+                       compatible = "st,stm32mp25-bsec";
+                       reg = <0x44000000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       part_number_otp@24 {
+                               reg = <0x24 0x4>;
+                       };
+
+                       package_otp@1e8 {
+                               reg = <0x1e8 0x1>;
+                               bits = <0 3>;
+                       };
+               };
+
+               rcc: clock-controller@44200000 {
+                       compatible = "st,stm32mp25-rcc";
+                       reg = <0x44200000 0x10000>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       clocks = <&scmi_clk CK_SCMI_HSE>,
+                               <&scmi_clk CK_SCMI_HSI>,
+                               <&scmi_clk CK_SCMI_MSI>,
+                               <&scmi_clk CK_SCMI_LSE>,
+                               <&scmi_clk CK_SCMI_LSI>,
+                               <&scmi_clk CK_SCMI_HSE_DIV2>,
+                               <&scmi_clk CK_SCMI_ICN_HS_MCU>,
+                               <&scmi_clk CK_SCMI_ICN_LS_MCU>,
+                               <&scmi_clk CK_SCMI_ICN_SDMMC>,
+                               <&scmi_clk CK_SCMI_ICN_DDR>,
+                               <&scmi_clk CK_SCMI_ICN_DISPLAY>,
+                               <&scmi_clk CK_SCMI_ICN_HSL>,
+                               <&scmi_clk CK_SCMI_ICN_NIC>,
+                               <&scmi_clk CK_SCMI_ICN_VID>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_07>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_08>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_09>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_10>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_11>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_12>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_13>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_14>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_15>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_16>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_17>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_18>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_19>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_20>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_21>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_22>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_23>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_24>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_25>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_26>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_27>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_28>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_29>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_30>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_31>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_32>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_33>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_34>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_35>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_36>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_37>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_38>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_39>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_40>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_41>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_42>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_43>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_44>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_45>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_46>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_47>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_48>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_49>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_50>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_51>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_52>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_53>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_54>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_55>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_56>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_57>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_58>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_59>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_60>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_61>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_62>,
+                               <&scmi_clk CK_SCMI_FLEXGEN_63>,
+                               <&scmi_clk CK_SCMI_ICN_APB1>,
+                               <&scmi_clk CK_SCMI_ICN_APB2>,
+                               <&scmi_clk CK_SCMI_ICN_APB3>,
+                               <&scmi_clk CK_SCMI_ICN_APB4>,
+                               <&scmi_clk CK_SCMI_ICN_APBDBG>,
+                               <&scmi_clk CK_SCMI_TIMG1>,
+                               <&scmi_clk CK_SCMI_TIMG2>,
+                               <&scmi_clk CK_SCMI_PLL3>,
+                               <&clk_dsi_txbyte>;
+                               access-controllers = <&rifsc 156>;
+               };
+
+               exti1: interrupt-controller@44220000 {
+                       compatible = "st,stm32mp1-exti", "syscon";
+                       reg = <0x44220000 0x400>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupts-extended =
+                               <&intc GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,        /* EXTI_0 */
+                               <&intc GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 270 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 273 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 275 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 276 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 277 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>,        /* EXTI_10 */
+                               <&intc GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 0   IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 1   IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 260 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 259 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,                                            /* EXTI_20 */
+                               <&intc GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,        /* EXTI_30 */
+                               <&intc GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <&intc GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,        /* EXTI_40 */
+                               <&intc GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH>,        /* EXTI_50 */
+                               <0>,
+                               <0>,
+                               <0>,
+                               <0>,
+                               <0>,
+                               <0>,
+                               <0>,
+                               <0>,
+                               <&intc GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,                                            /* EXTI_60 */
+                               <&intc GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <0>,
+                               <&intc GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <0>,
+                               <&intc GIC_SPI 10  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <&intc GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,        /* EXTI_70 */
+                               <0>,
+                               <&intc GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 202 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 253 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,                                            /* EXTI_80 */
+                               <0>,
+                               <0>,
+                               <&intc GIC_SPI 257 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 258 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               syscfg: syscon@44230000 {
+                       compatible = "st,stm32mp23-syscfg", "syscon";
+                       reg = <0x44230000 0x10000>;
+               };
+
+               pinctrl: pinctrl@44240000 {
+                       compatible = "st,stm32mp257-pinctrl";
+                       ranges = <0 0x44240000 0xa0400>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       interrupt-parent = <&exti1>;
+                       st,syscfg = <&exti1 0x60 0xff>;
+                       pins-are-numbered;
+
+                       gpioa: gpio@44240000 {
+                               reg = <0x0 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOA>;
+                               st,bank-name = "GPIOA";
+                               status = "disabled";
+                       };
+
+                       gpiob: gpio@44250000 {
+                               reg = <0x10000 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOB>;
+                               st,bank-name = "GPIOB";
+                               status = "disabled";
+                       };
+
+                       gpioc: gpio@44260000 {
+                               reg = <0x20000 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOC>;
+                               st,bank-name = "GPIOC";
+                               status = "disabled";
+                       };
+
+                       gpiod: gpio@44270000 {
+                               reg = <0x30000 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOD>;
+                               st,bank-name = "GPIOD";
+                               status = "disabled";
+                       };
+
+                       gpioe: gpio@44280000 {
+                               reg = <0x40000 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOE>;
+                               st,bank-name = "GPIOE";
+                               status = "disabled";
+                       };
+
+                       gpiof: gpio@44290000 {
+                               reg = <0x50000 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOF>;
+                               st,bank-name = "GPIOF";
+                               status = "disabled";
+                       };
+
+                       gpiog: gpio@442a0000 {
+                               reg = <0x60000 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOG>;
+                               st,bank-name = "GPIOG";
+                               status = "disabled";
+                       };
+
+                       gpioh: gpio@442b0000 {
+                               reg = <0x70000 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOH>;
+                               st,bank-name = "GPIOH";
+                               status = "disabled";
+                       };
+
+                       gpioi: gpio@442c0000 {
+                               reg = <0x80000 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOI>;
+                               st,bank-name = "GPIOI";
+                               status = "disabled";
+                       };
+
+                       gpioj: gpio@442d0000 {
+                               reg = <0x90000 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOJ>;
+                               st,bank-name = "GPIOJ";
+                               status = "disabled";
+                       };
+
+                       gpiok: gpio@442e0000 {
+                               reg = <0xa0000 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOK>;
+                               st,bank-name = "GPIOK";
+                               status = "disabled";
+                       };
+               };
+
+               rtc: rtc@46000000 {
+                       compatible = "st,stm32mp25-rtc";
+                       reg = <0x46000000 0x400>;
+                       clocks = <&scmi_clk CK_SCMI_RTC>,
+                                <&scmi_clk CK_SCMI_RTCCK>;
+                       clock-names = "pclk", "rtc_ck";
+                       interrupts-extended = <&exti2 17 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
+               pinctrl_z: pinctrl@46200000 {
+                       compatible = "st,stm32mp257-z-pinctrl";
+                       ranges = <0 0x46200000 0x400>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       interrupt-parent = <&exti1>;
+                       st,syscfg = <&exti1 0x60 0xff>;
+                       pins-are-numbered;
+
+                       gpioz: gpio@46200000 {
+                               reg = <0 0x400>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               clocks = <&scmi_clk CK_SCMI_GPIOZ>;
+                               st,bank-name = "GPIOZ";
+                               st,bank-ioport = <11>;
+                               status = "disabled";
+                       };
+
+               };
+
+               exti2: interrupt-controller@46230000 {
+                       compatible = "st,stm32mp1-exti", "syscon";
+                       reg = <0x46230000 0x400>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupts-extended =
+                               <&intc GIC_SPI 17  IRQ_TYPE_LEVEL_HIGH>,        /* EXTI_0 */
+                               <&intc GIC_SPI 18  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 19  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 20  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 21  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 22  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 23  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 24  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 25  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 26  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 27  IRQ_TYPE_LEVEL_HIGH>,        /* EXTI_10 */
+                               <&intc GIC_SPI 28  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 29  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 30  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 31  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 32  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 12  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 13  IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <0>,
+                               <0>,                                            /* EXTI_20 */
+                               <&intc GIC_SPI 14  IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 15  IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <0>,
+                               <&intc GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <&intc GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>,        /* EXTI_30 */
+                               <&intc GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <&intc GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 175 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <0>,
+                               <&intc GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <0>,
+                               <&intc GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>,        /* EXTI_40 */
+                               <0>,
+                               <0>,
+                               <&intc GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <0>,
+                               <&intc GIC_SPI 11  IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <&intc GIC_SPI 5   IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 4   IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 6   IRQ_TYPE_LEVEL_HIGH>,        /* EXTI_50 */
+                               <&intc GIC_SPI 7   IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 2   IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 3   IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <0>,
+                               <0>,
+                               <0>,
+                               <0>,
+                               <0>,
+                               <0>,                                            /* EXTI_60 */
+                               <&intc GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <&intc GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 248 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>,
+                               <&intc GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
+                               <0>,
+                               <0>,
+                               <&intc GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>;        /* EXTI_70 */
+               };
+
+               intc: interrupt-controller@4ac10000 {
+                       compatible = "arm,gic-400";
+                       reg = <0x4ac10000 0x1000>,
+                             <0x4ac20000 0x20000>,
+                             <0x4ac40000 0x20000>,
+                             <0x4ac60000 0x20000>;
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+               };
+       };
+};
diff --git a/src/arm64/st/stm32mp233.dtsi b/src/arm64/st/stm32mp233.dtsi
new file mode 100644 (file)
index 0000000..78f4059
--- /dev/null
@@ -0,0 +1,94 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+#include "stm32mp231.dtsi"
+
+/ {
+       cpus {
+               cpu1: cpu@1 {
+                       compatible = "arm,cortex-a35";
+                       reg = <1>;
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       power-domains = <&cpu1_pd>;
+                       power-domain-names = "psci";
+               };
+       };
+
+       arm-pmu {
+               interrupts = <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>, <&cpu1>;
+       };
+
+       psci {
+               cpu1_pd: power-domain-cpu1 {
+                       #power-domain-cells = <0>;
+                       power-domains = <&cluster_pd>;
+               };
+       };
+
+       timer {
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+};
+
+&optee {
+       interrupts = <GIC_PPI 15 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
+};
+
+&rifsc {
+       ethernet2: ethernet@482d0000 {
+               compatible = "st,stm32mp25-dwmac", "snps,dwmac-5.20";
+               reg = <0x482d0000 0x4000>;
+               reg-names = "stmmaceth";
+               interrupts-extended = <&intc GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "macirq";
+               clock-names = "stmmaceth",
+                             "mac-clk-tx",
+                             "mac-clk-rx",
+                             "ptp_ref",
+                             "ethstp",
+                             "eth-ck";
+               clocks = <&rcc CK_ETH2_MAC>,
+                        <&rcc CK_ETH2_TX>,
+                        <&rcc CK_ETH2_RX>,
+                        <&rcc CK_KER_ETH2PTP>,
+                        <&rcc CK_ETH2_STP>,
+                        <&rcc CK_KER_ETH2>;
+               snps,axi-config = <&stmmac_axi_config_2>;
+               snps,mixed-burst;
+               snps,mtl-rx-config = <&mtl_rx_setup_2>;
+               snps,mtl-tx-config = <&mtl_tx_setup_2>;
+               snps,pbl = <2>;
+               snps,tso;
+               st,syscon = <&syscfg 0x3400>;
+               access-controllers = <&rifsc 61>;
+               status = "disabled";
+
+               mtl_rx_setup_2: rx-queues-config {
+                       snps,rx-queues-to-use = <2>;
+                       queue0 {};
+                       queue1 {};
+               };
+
+               mtl_tx_setup_2: tx-queues-config {
+                       snps,tx-queues-to-use = <4>;
+                       queue0 {};
+                       queue1 {};
+                       queue2 {};
+                       queue3 {};
+               };
+
+               stmmac_axi_config_2: stmmac-axi-config {
+                       snps,blen = <0 0 0 0 16 8 4>;
+                       snps,rd_osr_lmt = <0x7>;
+                       snps,wr_osr_lmt = <0x7>;
+               };
+       };
+};
diff --git a/src/arm64/st/stm32mp235.dtsi b/src/arm64/st/stm32mp235.dtsi
new file mode 100644 (file)
index 0000000..2719c08
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+#include "stm32mp233.dtsi"
+
+&rifsc {
+       vdec: vdec@480d0000 {
+               compatible = "st,stm32mp25-vdec";
+               reg = <0x480d0000 0x3c8>;
+               interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&rcc CK_BUS_VDEC>;
+               access-controllers = <&rifsc 89>;
+       };
+};
diff --git a/src/arm64/st/stm32mp235f-dk.dts b/src/arm64/st/stm32mp235f-dk.dts
new file mode 100644 (file)
index 0000000..04d1b43
--- /dev/null
@@ -0,0 +1,113 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Amelie Delaunay <amelie.delaunay@foss.st.com> for STMicroelectronics.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include "stm32mp235.dtsi"
+#include "stm32mp23xf.dtsi"
+#include "stm32mp25-pinctrl.dtsi"
+#include "stm32mp25xxak-pinctrl.dtsi"
+
+/ {
+       model = "STMicroelectronics STM32MP235F-DK Discovery Board";
+       compatible = "st,stm32mp235f-dk", "st,stm32mp235";
+
+       aliases {
+               serial0 = &usart2;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               button-user-1 {
+                       label = "User-1";
+                       linux,code = <BTN_1>;
+                       gpios = <&gpioc 5 GPIO_ACTIVE_HIGH>;
+               };
+
+               button-user-2 {
+                       label = "User-2";
+                       linux,code = <BTN_2>;
+                       gpios = <&gpioc 11 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               led-blue {
+                       function = LED_FUNCTION_HEARTBEAT;
+                       color = <LED_COLOR_ID_BLUE>;
+                       gpios = <&gpioh 7 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+                       default-state = "off";
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x0 0x80000000 0x1 0x0>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               fw@80000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0x80000000 0x0 0x4000000>;
+                       no-map;
+               };
+       };
+};
+
+&arm_wdt {
+       timeout-sec = <32>;
+       status = "okay";
+};
+
+&scmi_regu {
+       scmi_vddio1: regulator@0 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+       };
+       scmi_vdd_sdcard: regulator@23 {
+               reg = <VOLTD_SCMI_STPMIC2_LDO7>;
+               regulator-name = "vdd_sdcard";
+       };
+};
+
+&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 = <&gpiod 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+       disable-wp;
+       st,neg-edge;
+       bus-width = <4>;
+       vmmc-supply = <&scmi_vdd_sdcard>;
+       vqmmc-supply = <&scmi_vddio1>;
+       status = "okay";
+};
+
+&usart2 {
+       pinctrl-names = "default", "idle", "sleep";
+       pinctrl-0 = <&usart2_pins_a>;
+       pinctrl-1 = <&usart2_idle_pins_a>;
+       pinctrl-2 = <&usart2_sleep_pins_a>;
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       status = "okay";
+};
diff --git a/src/arm64/st/stm32mp23xc.dtsi b/src/arm64/st/stm32mp23xc.dtsi
new file mode 100644 (file)
index 0000000..e33b00b
--- /dev/null
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+
+/ {
+};
diff --git a/src/arm64/st/stm32mp23xf.dtsi b/src/arm64/st/stm32mp23xf.dtsi
new file mode 100644 (file)
index 0000000..e33b00b
--- /dev/null
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+
+/ {
+};
index f3c6cdf..87110f9 100644 (file)
        };
 
        intc: interrupt-controller@4ac00000 {
-               compatible = "arm,cortex-a7-gic";
+               compatible = "arm,gic-400";
                #interrupt-cells = <3>;
-               #address-cells = <1>;
                interrupt-controller;
                reg = <0x0 0x4ac10000 0x0 0x1000>,
-                     <0x0 0x4ac20000 0x0 0x2000>,
-                     <0x0 0x4ac40000 0x0 0x2000>,
-                     <0x0 0x4ac60000 0x0 0x2000>;
+                     <0x0 0x4ac20000 0x0 0x20000>,
+                     <0x0 0x4ac40000 0x0 0x20000>,
+                     <0x0 0x4ac60000 0x0 0x20000>;
        };
 
        psci {
diff --git a/src/arm64/st/stm32mp257f-dk.dts b/src/arm64/st/stm32mp257f-dk.dts
new file mode 100644 (file)
index 0000000..a278a1e
--- /dev/null
@@ -0,0 +1,113 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * Copyright (C) STMicroelectronics 2025 - All Rights Reserved
+ * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include "stm32mp257.dtsi"
+#include "stm32mp25xf.dtsi"
+#include "stm32mp25-pinctrl.dtsi"
+#include "stm32mp25xxak-pinctrl.dtsi"
+
+/ {
+       model = "STMicroelectronics STM32MP257F-DK Discovery Board";
+       compatible = "st,stm32mp257f-dk", "st,stm32mp257";
+
+       aliases {
+               serial0 = &usart2;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               button-user-1 {
+                       label = "User-1";
+                       linux,code = <BTN_1>;
+                       gpios = <&gpioc 5 GPIO_ACTIVE_HIGH>;
+               };
+
+               button-user-2 {
+                       label = "User-2";
+                       linux,code = <BTN_2>;
+                       gpios = <&gpioc 11 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               led-blue {
+                       function = LED_FUNCTION_HEARTBEAT;
+                       color = <LED_COLOR_ID_BLUE>;
+                       gpios = <&gpioh 7 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+                       default-state = "off";
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x0 0x80000000 0x1 0x0>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               fw@80000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0x80000000 0x0 0x4000000>;
+                       no-map;
+               };
+       };
+};
+
+&arm_wdt {
+       timeout-sec = <32>;
+       status = "okay";
+};
+
+&scmi_regu {
+       scmi_vddio1: regulator@0 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+       };
+       scmi_vdd_sdcard: regulator@23 {
+               reg = <VOLTD_SCMI_STPMIC2_LDO7>;
+               regulator-name = "vdd_sdcard";
+       };
+};
+
+&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 = <&gpiod 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+       disable-wp;
+       st,neg-edge;
+       bus-width = <4>;
+       vmmc-supply = <&scmi_vdd_sdcard>;
+       vqmmc-supply = <&scmi_vddio1>;
+       status = "okay";
+};
+
+&usart2 {
+       pinctrl-names = "default", "idle", "sleep";
+       pinctrl-0 = <&usart2_pins_a>;
+       pinctrl-1 = <&usart2_idle_pins_a>;
+       pinctrl-2 = <&usart2_sleep_pins_a>;
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       status = "okay";
+};
index 690b4ed..9951eef 100644 (file)
@@ -92,7 +92,7 @@
                                reg = <0x0 0x000>;
                                enable-method = "psci";
                                clock-frequency = <2400000000>;
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                                reg = <0x0 0x001>;
                                enable-method = "psci";
                                clock-frequency = <2400000000>;
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                                reg = <0x0 0x002>;
                                enable-method = "psci";
                                clock-frequency = <2400000000>;
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                                compatible = "arm,cortex-a72";
                                reg = <0x0 0x003>;
                                enable-method = "psci";
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                                reg = <0x0 0x100>;
                                enable-method = "psci";
                                clock-frequency = <2400000000>;
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                                reg = <0x0 0x101>;
                                enable-method = "psci";
                                clock-frequency = <2400000000>;
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                                reg = <0x0 0x102>;
                                enable-method = "psci";
                                clock-frequency = <2400000000>;
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                                reg = <0x0 0x103>;
                                enable-method = "psci";
                                clock-frequency = <2400000000>;
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                                reg = <0x0 0x200>;
                                enable-method = "psci";
                                clock-frequency = <2400000000>;
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                                reg = <0x0 0x201>;
                                enable-method = "psci";
                                clock-frequency = <2400000000>;
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                                reg = <0x0 0x202>;
                                enable-method = "psci";
                                clock-frequency = <2400000000>;
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                                reg = <0x0 0x203>;
                                enable-method = "psci";
                                clock-frequency = <2400000000>;
-                               cpu-idle-states = <&CPU_SLEEP>;
+                               cpu-idle-states = <&cpu_sleep>;
                                i-cache-size = <0xc000>;
                                i-cache-line-size = <64>;
                                i-cache-sets = <256>;
                idle-states {
                        entry-method = "psci";
 
-                       CPU_SLEEP: cpu-sleep {
+                       cpu_sleep: cpu-sleep {
                                idle-state-name = "c2";
                                compatible = "arm,idle-state";
                                local-timer-stop;
index 2ef4cba..55ed418 100644 (file)
@@ -29,6 +29,7 @@
        memory@80000000 {
                device_type = "memory";
                reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
+               bootph-all;
        };
 
        reserved_memory: reserved-memory {
                #size-cells = <2>;
                ranges;
 
-               ramoops@9ca00000 {
+               ramoops@9c700000 {
                        compatible = "ramoops";
-                       reg = <0x00 0x9ca00000 0x00 0x00100000>;
+                       reg = <0x00 0x9c700000 0x00 0x00100000>;
                        record-size = <0x8000>;
                        console-size = <0x8000>;
                        ftrace-size = <0x00>;
                        pmsg-size = <0x8000>;
                };
 
+               rtos_ipc_memory_region: ipc-memories@9c800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9c800000 0x00 0x00300000>;
+                       no-map;
+               };
+
                mcu_m4fss_dma_memory_region: m4f-dma-memory@9cb00000 {
                        compatible = "shared-dma-pool";
                        reg = <0x00 0x9cb00000 0x00 0x100000>;
                        AM62X_IOPAD(0x1e0, PIN_INPUT_PULLUP, 0) /* (B16) I2C0_SCL */
                        AM62X_IOPAD(0x1e4, PIN_INPUT_PULLUP, 0) /* (A16) I2C0_SDA */
                >;
+               bootph-all;
        };
 
        main_mdio1_pins_default: main-mdio1-default-pins {
                        AM62X_IOPAD(0x160, PIN_OUTPUT, 0) /* (AD24) MDIO0_MDC */
                        AM62X_IOPAD(0x15c, PIN_INPUT, 0) /* (AB22) MDIO0_MDIO */
                >;
+               bootph-all;
        };
 
        main_mmc0_pins_default: main-mmc0-default-pins {
                        AM62X_IOPAD(0x1fc, PIN_INPUT_PULLUP, 0) /* (AD2) MMC0_DAT6 */
                        AM62X_IOPAD(0x1f8, PIN_INPUT_PULLUP, 0) /* (AC2) MMC0_DAT7 */
                >;
+               bootph-all;
        };
 
        main_rgmii1_pins_default: main-rgmii1-default-pins {
                        AM62X_IOPAD(0x130, PIN_OUTPUT, 0) /* (AE19) RGMII1_TXC */
                        AM62X_IOPAD(0x12c, PIN_OUTPUT, 0) /* (AD19) RGMII1_TX_CTL */
                >;
+               bootph-all;
        };
 
        ospi0_pins_default: ospi0-default-pins {
                        AM62X_IOPAD(0x028, PIN_INPUT, 0) /* (J22) OSPI0_D7 */
                        AM62X_IOPAD(0x008, PIN_INPUT, 0) /* (J24) OSPI0_DQS */
                >;
+               bootph-all;
        };
 
        pmic_irq_pins_default: pmic-irq-default-pins {
 &cpsw_port1 {
        phy-mode = "rgmii-rxid";
        phy-handle = <&cpsw3g_phy1>;
+       bootph-all;
 };
 
 &cpsw3g_mdio {
        cpsw3g_phy1: ethernet-phy@1 {
                compatible = "ethernet-phy-id2000.a231", "ethernet-phy-ieee802.3-c22";
                reg = <1>;
+               bootph-all;
                ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
                ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
        };
        };
 };
 
+&main_pktdma {
+       bootph-all;
+};
+
 &main_i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c0_pins_default>;
        clock-frequency = <400000>;
+       bootph-all;
        status = "okay";
 
        pmic@30 {
                cdns,tchsh-ns = <60>;
                cdns,tslch-ns = <60>;
                cdns,read-delay = <0>;
+               bootph-all;
        };
 };
 
        pinctrl-0 = <&main_mmc0_pins_default>;
        disable-wp;
        non-removable;
+       bootph-all;
        status = "okay";
 };
index 9202181..fcc4cb2 100644 (file)
                        "Headphone Jack", "HPOUTR",
                        "IN2L", "Line In Jack",
                        "IN2R", "Line In Jack",
-                       "Headphone Jack", "MICBIAS",
-                       "IN1L", "Headphone Jack";
+                       "Microphone Jack", "MICBIAS",
+                       "IN1L", "Microphone Jack";
                simple-audio-card,widgets =
-                       "Microphone", "Headphone Jack",
+                       "Microphone", "Microphone Jack",
                        "Headphone", "Headphone Jack",
                        "Line", "Line In Jack";
 
index 75c8029..a5469f2 100644 (file)
                        pmsg-size = <0x8000>;
                };
 
+               /* global cma region */
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       reusable;
+                       size = <0x00 0x8000000>;
+                       linux,cma-default;
+               };
+
                secure_tfa_ddr: tfa@9e780000 {
                        reg = <0x00 0x9e780000 0x00 0x80000>;
                        no-map;
index 0469c76..9ed9d70 100644 (file)
@@ -12,7 +12,6 @@
                #pinctrl-cells = <1>;
                pinctrl-single,register-width = <32>;
                pinctrl-single,function-mask = <0xffffffff>;
-               status = "disabled";
        };
 
        mcu_esm: esm@4100000 {
index a5aceaa..147d56b 100644 (file)
@@ -42,6 +42,7 @@
                device_type = "memory";
                /* 2G RAM */
                reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
+               bootph-all;
        };
 
        reserved-memory {
                        AM62AX_IOPAD(0x1e0, PIN_INPUT_PULLUP, 0) /* (D17) I2C0_SCL */
                        AM62AX_IOPAD(0x1e4, PIN_INPUT_PULLUP, 0) /* (E16) I2C0_SDA */
                >;
+               bootph-all;
        };
 
        main_mdio1_pins_default: main-mdio1-default-pins {
                        AM62AX_IOPAD(0x160, PIN_OUTPUT, 0) /* (V12) MDIO0_MDC */
                        AM62AX_IOPAD(0x15c, PIN_INPUT, 0) /* (V13) MDIO0_MDIO */
                >;
+               bootph-all;
        };
 
        main_mmc0_pins_default: main-mmc0-default-pins {
                        AM62AX_IOPAD(0x1fc, PIN_INPUT_PULLUP, 0) /* (W9) MMC0_DAT6 */
                        AM62AX_IOPAD(0x1f8, PIN_INPUT_PULLUP, 0) /* (AB8) MMC0_DAT7 */
                >;
+               bootph-all;
        };
 
        main_rgmii1_pins_default: main-rgmii1-default-pins {
                        AM62AX_IOPAD(0x130, PIN_OUTPUT, 0) /* (AB17) RGMII1_TXC */
                        AM62AX_IOPAD(0x12c, PIN_OUTPUT, 0) /* (W16) RGMII1_TX_CTL */
                >;
+               bootph-all;
        };
 
        ospi0_pins_default: ospi0-default-pins {
                        AM62AX_IOPAD(0x028, PIN_INPUT, 0) /* (J22) OSPI0_D7 */
                        AM62AX_IOPAD(0x008, PIN_INPUT, 0) /* (L21) OSPI0_DQS */
                >;
+               bootph-all;
        };
 
        pmic_irq_pins_default: pmic-irq-default-pins {
 };
 
 &cpsw3g {
-       status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_rgmii1_pins_default>;
+       status = "okay";
 };
 
 &cpsw_port1 {
        phy-mode = "rgmii-rxid";
        phy-handle = <&cpsw3g_phy1>;
+       bootph-all;
 };
 
 &cpsw3g_mdio {
        cpsw3g_phy1: ethernet-phy@1 {
                compatible = "ethernet-phy-id2000.a231", "ethernet-phy-ieee802.3-c22";
                reg = <1>;
+               bootph-all;
                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>;
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c0_pins_default>;
        clock-frequency = <400000>;
+       bootph-all;
        status = "okay";
 
        pmic@30 {
                interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-controller;
                #interrupt-cells = <1>;
-               ti,power-button;
                system-power-controller;
+               ti,power-button;
 
                regulators {
                        vdd_3v3: buck1 {
        status = "okay";
 };
 
+&main_pktdma {
+       bootph-all;
+};
+
 &ospi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&ospi0_pins_default>;
                cdns,tchsh-ns = <60>;
                cdns,tslch-ns = <60>;
                cdns,read-delay = <0>;
+               bootph-all;
        };
 };
 
        pinctrl-0 = <&main_mmc0_pins_default>;
        disable-wp;
        non-removable;
+       bootph-all;
        status = "okay";
 };
index a6f0d87..1c9d956 100644 (file)
 
        aliases {
                serial0 = &wkup_uart0;
+               serial1 = &mcu_uart0;
                serial2 = &main_uart0;
                serial3 = &main_uart1;
                mmc0 = &sdhci0;
                mmc1 = &sdhci1;
+               rtc0 = &wkup_rtc0;
+               rtc1 = &tps659312;
        };
 
        chosen {
 };
 
 &usb0 {
+       bootph-all;
        usb-role-switch;
 
        port {
index b33aff0..bd6a00d 100644 (file)
                #pinctrl-cells = <1>;
                pinctrl-single,register-width = <32>;
                pinctrl-single,function-mask = <0xffffffff>;
-               pinctrl-single,gpio-range =
-                       <&mcu_pmx_range 0 21 PIN_GPIO_RANGE_IOPAD>,
-                       <&mcu_pmx_range 23 1 PIN_GPIO_RANGE_IOPAD>,
-                       <&mcu_pmx_range 32 2 PIN_GPIO_RANGE_IOPAD>;
                bootph-all;
-
-               mcu_pmx_range: gpio-range {
-                       #pinctrl-single,gpio-range-cells = <3>;
-               };
        };
 
        mcu_esm: esm@4100000 {
index 6f32135..6757b37 100644 (file)
@@ -2,9 +2,11 @@
 /*
  * Device Tree file for the WAKEUP domain peripherals shared by AM62P and J722S
  *
- * Copyright (C) 2023-2024 Texas Instruments Incorporated - https://www.ti.com/
+ * Copyright (C) 2023-2025 Texas Instruments Incorporated - https://www.ti.com/
  */
 
+#include <dt-bindings/bus/ti-sysc.h>
+
 &cbass_wakeup {
        wkup_conf: bus@43000000 {
                compatible = "simple-bus";
                };
        };
 
-       wkup_uart0: serial@2b300000 {
-               compatible = "ti,am64-uart", "ti,am654-uart";
-               reg = <0x00 0x2b300000 0x00 0x100>;
-               interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
+       target-module@2b300050 {
+               compatible = "ti,sysc-omap2", "ti,sysc";
+               reg = <0 0x2b300050 0 0x4>,
+                     <0 0x2b300054 0 0x4>,
+                     <0 0x2b300058 0 0x4>;
+               reg-names = "rev", "sysc", "syss";
+               ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+                                SYSC_OMAP2_SOFTRESET |
+                                SYSC_OMAP2_AUTOIDLE)>;
+               ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+                               <SYSC_IDLE_NO>,
+                               <SYSC_IDLE_SMART>,
+                               <SYSC_IDLE_SMART_WKUP>;
+               ti,syss-mask = <1>;
+               ti,no-reset-on-init;
                power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>;
                clocks = <&k3_clks 114 0>;
-               clock-names = "fclk";
-               status = "disabled";
+               clock-names = "fck";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0 0 0x2b300000 0x100000>;
+
+               wkup_uart0: serial@0 {
+                       compatible = "ti,am64-uart", "ti,am654-uart";
+                       reg = <0 0x100>;
+                       interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
        };
 
        wkup_i2c0: i2c@2b200000 {
index 420c77c..6aea9d3 100644 (file)
        ti,interrupt-ranges = <5 69 35>;
 };
 
-&main_pmx0 {
-       pinctrl-single,gpio-range =
-               <&main_pmx0_range 0 32 PIN_GPIO_RANGE_IOPAD>,
-               <&main_pmx0_range 33 38 PIN_GPIO_RANGE_IOPAD>,
-               <&main_pmx0_range 72 22 PIN_GPIO_RANGE_IOPAD>,
-               <&main_pmx0_range 137 5 PIN_GPIO_RANGE_IOPAD>,
-               <&main_pmx0_range 143 3 PIN_GPIO_RANGE_IOPAD>,
-               <&main_pmx0_range 149 2 PIN_GPIO_RANGE_IOPAD>;
+&main_conf {
+       audio_refclk0: clock-controller@82e0 {
+               compatible = "ti,am62-audio-refclk";
+               reg = <0x82e0 0x4>;
+               clocks = <&k3_clks 157 0>;
+               assigned-clocks = <&k3_clks 157 0>;
+               assigned-clock-parents = <&k3_clks 157 16>;
+               #clock-cells = <0>;
+       };
 
-       main_pmx0_range: gpio-range {
-               #pinctrl-single,gpio-range-cells = <3>;
+       audio_refclk1: clock-controller@82e4 {
+               compatible = "ti,am62-audio-refclk";
+               reg = <0x82e4 0x4>;
+               clocks = <&k3_clks 157 18>;
+               assigned-clocks = <&k3_clks 157 18>;
+               assigned-clock-parents = <&k3_clks 157 34>;
+               #clock-cells = <0>;
        };
 };
 
index ad71d2f..d29f524 100644 (file)
@@ -19,6 +19,7 @@
 
        aliases {
                serial0 = &wkup_uart0;
+               serial1 = &mcu_uart0;
                serial2 = &main_uart0;
                serial3 = &main_uart1;
                mmc0 = &sdhci0;
 
        main_usb1_pins_default: main-usb1-default-pins {
                pinctrl-single,pins = <
-                       AM62PX_IOPAD(0x0258, PIN_INPUT, 0) /* (G21) USB1_DRVVBUS */
+                       AM62PX_IOPAD(0x0258, PIN_INPUT | PIN_DS_PULLUD_ENABLE | PIN_DS_PULL_UP, 0) /* (G21) USB1_DRVVBUS */
                >;
        };
 
 };
 
 &usb0 {
+       bootph-all;
        usb-role-switch;
 
        port {
index 922cad1..aab74d6 100644 (file)
                regulator-max-microvolt = <3300000>;
                regulator-always-on;
                regulator-boot-on;
+               bootph-all;
        };
 
        vcc_3v3_sw: regulator-vcc-3v3-sw {
                        AM62X_IOPAD(0x224, PIN_INPUT_PULLUP, 0) /* (D22) MMC1_DAT3 */
                        AM62X_IOPAD(0x240, PIN_INPUT_PULLUP, 0) /* (D17) MMC1_SDCD */
                >;
+               bootph-all;
        };
 
        main_rgmii2_pins_default: main-rgmii2-default-pins {
                        AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14) UART0_RXD */
                        AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14) UART0_TXD */
                >;
+               bootph-all;
        };
 
        main_uart1_pins_default: main-uart1-default-pins {
                        AM62X_IOPAD(0x1ac, PIN_INPUT, 2) /* (E19) MCASP0_AFSR.UART1_RXD */
                        AM62X_IOPAD(0x1b0, PIN_OUTPUT, 2) /* (A20) MCASP0_ACLKR.UART1_TXD */
                >;
+               bootph-pre-ram;
        };
 
        main_usb1_pins_default: main-usb1-default-pins {
 &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;
        /* Main UART1 may be used by TIFS firmware */
        status = "okay";
 };
        pinctrl-0 = <&main_mmc1_pins_default>;
        disable-wp;
        no-1-8-v;
+       bootph-all;
        status = "okay";
 };
 
 &usbss0 {
        ti,vbus-divider;
+       bootph-all;
        status = "okay";
 };
 
 
 &usb0 {
        usb-role-switch;
+       bootph-all;
 
        port {
                typec_hs: endpoint {
index 2f129e8..d52cb2a 100644 (file)
@@ -12,6 +12,8 @@
 
 / {
        aliases {
+               serial0 = &wkup_uart0;
+               serial1 = &mcu_uart0;
                serial2 = &main_uart0;
                mmc0 = &sdhci0;
                mmc1 = &sdhci1;
index 99a6fdf..d9d491b 100644 (file)
@@ -27,6 +27,7 @@
        memory@80000000 {
                device_type = "memory";
                reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
+               bootph-all;
        };
 
        reserved_memory: reserved-memory {
                        reg = <0x00 0xa4100000 0x00 0xf00000>;
                        no-map;
                };
+
+               rtos_ipc_memory_region: ipc-memories@a5000000 {
+                       reg = <0x00 0xa5000000 0x00 0x00800000>;
+                       alignment = <0x1000>;
+                       no-map;
+               };
        };
 
        leds {
                        AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4)      /* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */
                        AM64X_IOPAD(0x0100, PIN_OUTPUT, 7)      /* (V7) PRG1_PRU0_GPO18.GPIO0_63 */
                >;
+               bootph-all;
        };
 
        cpsw_rgmii1_pins_default: cpsw-rgmii1-default-pins {
                        AM64X_IOPAD(0x014c, PIN_OUTPUT, 4)      /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */
                        AM64X_IOPAD(0x0154, PIN_INPUT, 7)       /* (V12) PRG1_PRU1_GPO19.GPIO0_84 */
                >;
+               bootph-all;
        };
 
        eeprom_wp_pins_default: eeprom-wp-default-pins {
                        AM64X_IOPAD(0x0260, PIN_INPUT, 0)       /* (A18) I2C0_SCL */
                        AM64X_IOPAD(0x0264, PIN_INPUT, 0)       /* (B18) I2C0_SDA */
                >;
+               bootph-all;
        };
 
        ospi0_pins_default: ospi0-default-pins {
                        AM64X_IOPAD(0x0028, PIN_INPUT, 0)       /* (M17) OSPI0_D7 */
                        AM64X_IOPAD(0x002c, PIN_OUTPUT, 0)      /* (L19) OSPI0_CSn0 */
                >;
+               bootph-all;
        };
 
        rtc_pins_default: rtc-defaults-pins {
 };
 
 &cpsw3g_mdio {
-       status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&cpsw_mdio_pins_default>;
+       bootph-all;
+       status = "okay";
 
        cpsw3g_phy1: ethernet-phy@1 {
                compatible = "ethernet-phy-id2000.a231", "ethernet-phy-ieee802.3-c22";
                reg = <1>;
                interrupt-parent = <&main_gpio0>;
                interrupts = <84 IRQ_TYPE_EDGE_FALLING>;
-               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
-               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
                reset-gpios = <&main_gpio0 63 GPIO_ACTIVE_LOW>;
                reset-assert-us = <1000>;
                reset-deassert-us = <1000>;
+               bootph-all;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
        };
 };
 
 &cpsw_port1 {
        phy-mode = "rgmii-rxid";
        phy-handle = <&cpsw3g_phy1>;
+       bootph-all;
        status = "okay";
 };
 
 };
 
 &main_i2c0 {
-       status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c0_pins_default>;
        clock-frequency = <400000>;
+       bootph-all;
+       status = "okay";
 
        eeprom@50 {
                compatible = "atmel,24c32";
        };
 };
 
+&main_pktdma {
+       bootph-all;
+};
+
 &main_r5fss0_core0 {
        mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
        memory-region = <&main_r5fss0_core0_dma_memory_region>,
 };
 
 &ospi0 {
-       status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&ospi0_pins_default>;
+       status = "okay";
 
        serial_flash: flash@0 {
                compatible = "jedec,spi-nor";
                cdns,tchsh-ns = <60>;
                cdns,tslch-ns = <60>;
                cdns,read-delay = <0>;
+               bootph-all;
        };
 };
 
 &sdhci0 {
-       status = "okay";
        non-removable;
        ti,driver-strength-ohm = <50>;
        disable-wp;
        keep-power-in-suspend;
+       bootph-all;
+       status = "okay";
 };
 
 &tscadc0 {
index bc8e1ce..f63c101 100644 (file)
                regulator-max-microvolt = <3300000>;
                regulator-boot-on;
                regulator-always-on;
+               bootph-all;
        };
 };
 
                        AM64X_IOPAD(0x0294, PIN_INPUT_PULLUP, 0)        /* (J19) MMC1_CMD */
                        AM64X_IOPAD(0x0298, PIN_INPUT_PULLUP, 0)        /* (D19) MMC1_SDCD */
                >;
+               bootph-all;
        };
 
        main_spi0_pins_default: main-spi0-default-pins {
                        AM64X_IOPAD(0x0230, PIN_INPUT, 0)       /* (D15) UART0_RXD */
                        AM64X_IOPAD(0x0234, PIN_OUTPUT, 0)      /* (C16) UART0_TXD */
                >;
+               bootph-all;
        };
 
        main_uart1_pins_default: main-uart1-default-pins {
 };
 
 &main_i2c1 {
-       status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c1_pins_default>;
        clock-frequency = <400000>;
+       status = "okay";
 
        eeprom@51 {
                compatible = "atmel,24c02";
 };
 
 &main_mcan0 {
-       status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_mcan0_pins_default>;
        phys = <&can_tc1>;
+       status = "okay";
 };
 
 &main_mcan1 {
-       status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_mcan1_pins_default>;
        phys = <&can_tc2>;
+       status = "okay";
 };
 
 &main_spi0 {
-       status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_spi0_pins_default>;
        cs-gpios = <0>, <&main_gpio1 43 GPIO_ACTIVE_LOW>;
        ti,pindir-d0-out-d1-in;
+       status = "okay";
 
        tpm@1 {
                compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
 };
 
 &main_uart0 {
-       status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_uart0_pins_default>;
+       bootph-all;
+       status = "okay";
 };
 
 &main_uart1 {
-       status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_uart1_pins_default>;
        uart-has-rtscts;
+       status = "okay";
 };
 
 &sdhci1 {
-       status = "okay";
        vmmc-supply = <&vcc_3v3_mmc>;
        pinctrl-names = "default";
        pinctrl-0 = <&main_mmc1_pins_default>;
        disable-wp;
        no-1-8-v;
+       bootph-all;
+       status = "okay";
 };
 
 &serdes0 {
diff --git a/src/arm64/ti/k3-am642-phyboard-electra-x27-gpio1-spi1-uart3.dtso b/src/arm64/ti/k3-am642-phyboard-electra-x27-gpio1-spi1-uart3.dtso
new file mode 100644 (file)
index 0000000..996c42e
--- /dev/null
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Authors:
+ *   Wadim Egorov <w.egorov@phytec.de>
+ *   Daniel Schultz <d.schultz@phytec.de>
+ *
+ * GPIO, SPI and UART examples for the X27 expansion connector.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include "k3-pinctrl.h"
+
+&{/} {
+       aliases {
+               serial5 = "/bus@f4000/serial@2830000";
+       };
+};
+
+&main_pmx0 {
+       main_gpio1_exp_header_gpio_pins_default: main-gpio1-exp-header-gpio-pins-default {
+               pinctrl-single,pins = <
+                       AM64X_IOPAD(0x0220, PIN_INPUT, 7)       /* (D14) SPI1_CS1.GPIO1_48 */
+               >;
+       };
+
+       main_spi1_pins_default: main-spi1-pins-default {
+               pinctrl-single,pins = <
+                       AM64X_IOPAD(0x0224, PIN_INPUT, 0)       /* (C14) SPI1_CLK */
+                       AM64X_IOPAD(0x021C, PIN_OUTPUT, 0)      /* (B14) SPI1_CS0 */
+                       AM64X_IOPAD(0x0228, PIN_OUTPUT, 0)      /* (B15) SPI1_D0 */
+                       AM64X_IOPAD(0x022C, PIN_INPUT, 0)       /* (A15) SPI1_D1 */
+               >;
+       };
+
+       main_uart3_pins_default: main-uart3-pins-default {
+               pinctrl-single,pins = <
+                       AM64X_IOPAD(0x0048, PIN_INPUT, 2)       /* (U20) GPMC0_AD3.UART3_RXD */
+                       AM64X_IOPAD(0x004c, PIN_OUTPUT, 2)      /* (U18) GPMC0_AD4.UART3_TXD */
+               >;
+       };
+};
+
+&main_gpio1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_gpio1_exp_header_gpio_pins_default>;
+       status = "okay";
+};
+
+&main_spi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_spi1_pins_default>;
+       ti,pindir-d0-out-d1-in = <1>;
+       status = "okay";
+};
+
+&main_uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_uart3_pins_default>;
+       status = "okay";
+};
index 4c1e02a..4421852 100644 (file)
                #phy-cells = <0>;
                cdns,phy-type = <PHY_TYPE_USB3>;
                resets = <&serdes_wiz3 1>, <&serdes_wiz3 2>;
+               bootph-all;
        };
 };
 
index 69b3d1e..440ef57 100644 (file)
                #phy-cells = <0>;
                cdns,phy-type = <PHY_TYPE_USB3>;
                resets = <&serdes_wiz3 1>, <&serdes_wiz3 2>;
+               bootph-all;
        };
 };
 
index b3a0385..54fc5c4 100644 (file)
                cdns,tchsh-ns = <60>;
                cdns,tslch-ns = <60>;
                cdns,read-delay = <4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "ospi.tiboot3";
+                               reg = <0x0 0x80000>;
+                       };
+
+                       partition@80000 {
+                               label = "ospi.tispl";
+                               reg = <0x80000 0x200000>;
+                       };
+
+                       partition@280000 {
+                               label = "ospi.u-boot";
+                               reg = <0x280000 0x400000>;
+                       };
+
+                       partition@680000 {
+                               label = "ospi.env";
+                               reg = <0x680000 0x40000>;
+                       };
+
+                       partition@6c0000 {
+                               label = "ospi.env.backup";
+                               reg = <0x6c0000 0x40000>;
+                       };
+
+                       partition@800000 {
+                               label = "ospi.rootfs";
+                               reg = <0x800000 0x37c0000>;
+                       };
+
+                       partition@3fc0000 {
+                               label = "ospi.phypattern";
+                               reg = <0x3fc0000 0x40000>;
+                       };
+               };
        };
 };
 
index d184e9c..2127316 100644 (file)
                bootph-all;
        };
 
+       main_i2c2_pins_default: main-i2c2-default-pins {
+               pinctrl-single,pins = <
+                       J722S_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (P22) GPMC0_CSn2.I2C2_SCL */
+                       J722S_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (P23) GPMC0_CSn3.I2C2_SDA */
+               >;
+       };
+
        main_uart0_pins_default: main-uart0-default-pins {
                pinctrl-single,pins = <
                        J722S_IOPAD(0x01c8, PIN_INPUT, 0)       /* (A22) UART0_RXD */
                p05-hog {
                        /* P05 - USB2.0_MUX_SEL */
                        gpio-hog;
-                       gpios = <5 GPIO_ACTIVE_HIGH>;
+                       gpios = <5 GPIO_ACTIVE_LOW>;
                        output-high;
                };
 
        };
 };
 
+&main_i2c2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c2_pins_default>;
+       clock-frequency = <400000>;
+
+       pca9543_0: i2c-mux@70 {
+               compatible = "nxp,pca9543";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+       };
+
+       pca9543_1: i2c-mux@71 {
+               compatible = "nxp,pca9543";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x71>;
+       };
+};
+
 &ospi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&ospi0_pins_default>;
index 3ac2d45..6850f50 100644 (file)
                };
        };
 
+       ti_csi2rx1: ticsi2rx@30122000 {
+               compatible = "ti,j721e-csi2rx-shim";
+               reg = <0x00 0x30122000 0x00 0x1000>;
+               ranges;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               dmas = <&main_bcdma_csi 0 0x5100 0>;
+               dma-names = "rx0";
+               power-domains = <&k3_pds 247 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+
+               cdns_csi2rx1: csi-bridge@30121000 {
+                       compatible = "ti,j721e-csi2rx", "cdns,csi2rx";
+                       reg = <0x00 0x30121000 0x00 0x1000>;
+                       clocks = <&k3_clks 247 0>, <&k3_clks 247 3>, <&k3_clks 247 0>,
+                                <&k3_clks 247 0>, <&k3_clks 247 4>, <&k3_clks 247 4>;
+                       clock-names = "sys_clk", "p_clk", "pixel_if0_clk",
+                                     "pixel_if1_clk", "pixel_if2_clk", "pixel_if3_clk";
+                       phys = <&dphy1>;
+                       phy-names = "dphy";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               csi1_port0: port@0 {
+                                       reg = <0>;
+                                       status = "disabled";
+                               };
+
+                               csi1_port1: port@1 {
+                                       reg = <1>;
+                                       status = "disabled";
+                               };
+
+                               csi1_port2: port@2 {
+                                       reg = <2>;
+                                       status = "disabled";
+                               };
+
+                               csi1_port3: port@3 {
+                                       reg = <3>;
+                                       status = "disabled";
+                               };
+
+                               csi1_port4: port@4 {
+                                       reg = <4>;
+                                       status = "disabled";
+                               };
+                       };
+               };
+       };
+
+       ti_csi2rx2: ticsi2rx@30142000 {
+               compatible = "ti,j721e-csi2rx-shim";
+               reg = <0x00 0x30142000 0x00 0x1000>;
+               ranges;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               power-domains = <&k3_pds 248 TI_SCI_PD_EXCLUSIVE>;
+               dmas = <&main_bcdma_csi 0 0x5200 0>;
+               dma-names = "rx0";
+               status = "disabled";
+
+               cdns_csi2rx2: csi-bridge@30141000 {
+                       compatible = "ti,j721e-csi2rx", "cdns,csi2rx";
+                       reg = <0x00 0x30141000 0x00 0x1000>;
+                       clocks = <&k3_clks 248 0>, <&k3_clks 248 3>, <&k3_clks 248 0>,
+                                <&k3_clks 248 0>, <&k3_clks 248 4>, <&k3_clks 248 4>;
+                       clock-names = "sys_clk", "p_clk", "pixel_if0_clk",
+                                     "pixel_if1_clk", "pixel_if2_clk", "pixel_if3_clk";
+                       phys = <&dphy2>;
+                       phy-names = "dphy";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               csi2_port0: port@0 {
+                                       reg = <0>;
+                                       status = "disabled";
+                               };
+
+                               csi2_port1: port@1 {
+                                       reg = <1>;
+                                       status = "disabled";
+                               };
+
+                               csi2_port2: port@2 {
+                                       reg = <2>;
+                                       status = "disabled";
+                               };
+
+                               csi2_port3: port@3 {
+                                       reg = <3>;
+                                       status = "disabled";
+                               };
+
+                               csi2_port4: port@4 {
+                                       reg = <4>;
+                                       status = "disabled";
+                               };
+                       };
+               };
+       };
+
+       ti_csi2rx3: ticsi2rx@30162000 {
+               compatible = "ti,j721e-csi2rx-shim";
+               reg = <0x00 0x30162000 0x00 0x1000>;
+               ranges;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               dmas = <&main_bcdma_csi 0 0x5300 0>;
+               dma-names = "rx0";
+               power-domains = <&k3_pds 249 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+
+               cdns_csi2rx3: csi-bridge@30161000 {
+                       compatible = "ti,j721e-csi2rx", "cdns,csi2rx";
+                       reg = <0x00 0x30161000 0x00 0x1000>;
+                       clocks = <&k3_clks 249 0>, <&k3_clks 249 3>, <&k3_clks 249 0>,
+                                <&k3_clks 249 0>, <&k3_clks 249 4>, <&k3_clks 249 4>;
+                       clock-names = "sys_clk", "p_clk", "pixel_if0_clk",
+                                     "pixel_if1_clk", "pixel_if2_clk", "pixel_if3_clk";
+                       phys = <&dphy3>;
+                       phy-names = "dphy";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               csi3_port0: port@0 {
+                                       reg = <0>;
+                                       status = "disabled";
+                               };
+
+                               csi3_port1: port@1 {
+                                       reg = <1>;
+                                       status = "disabled";
+                               };
+
+                               csi3_port2: port@2 {
+                                       reg = <2>;
+                                       status = "disabled";
+                               };
+
+                               csi3_port3: port@3 {
+                                       reg = <3>;
+                                       status = "disabled";
+                               };
+
+                               csi3_port4: port@4 {
+                                       reg = <4>;
+                                       status = "disabled";
+                               };
+                       };
+               };
+       };
+
+       dphy1: phy@30130000 {
+               compatible = "cdns,dphy-rx";
+               reg = <0x00 0x30130000 0x00 0x1100>;
+               #phy-cells = <0>;
+               power-domains = <&k3_pds 251 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+       };
+
+       dphy2: phy@30150000 {
+               compatible = "cdns,dphy-rx";
+               reg = <0x00 0x30150000 0x00 0x1100>;
+               #phy-cells = <0>;
+               power-domains = <&k3_pds 252 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+       };
+
+       dphy3: phy@30170000 {
+               compatible = "cdns,dphy-rx";
+               reg = <0x00 0x30170000 0x00 0x1100>;
+               #phy-cells = <0>;
+               power-domains = <&k3_pds 253 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+       };
+
        main_r5fss0: r5fss@78400000 {
                compatible = "ti,am62-r5fss";
                #address-cells = <1>;
        };
 };
 
+&main_bcdma_csi {
+       compatible = "ti,j722s-dmss-bcdma-csi";
+       reg = <0x00 0x4e230000 0x00 0x100>,
+             <0x00 0x4e180000 0x00 0x20000>,
+             <0x00 0x4e300000 0x00 0x10000>,
+             <0x00 0x4e100000 0x00 0x80000>;
+       reg-names = "gcfg", "rchanrt", "tchanrt", "ringrt";
+       ti,sci-rm-range-tchan = <0x22>;
+};
+
 /* MCU domain overrides */
 
 &mcu_r5fss0_core0 {
        ti,interrupt-ranges = <7 71 21>;
 };
 
-&main_pmx0 {
-       pinctrl-single,gpio-range =
-               <&main_pmx0_range 0 32 PIN_GPIO_RANGE_IOPAD>,
-               <&main_pmx0_range 33 38 PIN_GPIO_RANGE_IOPAD>,
-               <&main_pmx0_range 72 17 PIN_GPIO_RANGE_IOPAD>,
-               <&main_pmx0_range 101 25 PIN_GPIO_RANGE_IOPAD>,
-               <&main_pmx0_range 137 5 PIN_GPIO_RANGE_IOPAD>,
-               <&main_pmx0_range 143 3 PIN_GPIO_RANGE_IOPAD>,
-               <&main_pmx0_range 149 2 PIN_GPIO_RANGE_IOPAD>;
-
-       main_pmx0_range: gpio-range {
-               #pinctrl-single,gpio-range-cells = <3>;
-       };
-};
-
 &main_gpio0 {
        gpio-ranges = <&main_pmx0 0 0 32>, <&main_pmx0 32 33 38>,
                        <&main_pmx0 70 72 17>;
index dcd2c7c..c1f9573 100644 (file)
                gpios = <16 GPIO_ACTIVE_HIGH>;
                output-low;
        };
-
-       /* Toggle MUX2 for MDIO lines */
-       mux-sel-hog {
-               gpio-hog;
-               gpios = <13 GPIO_ACTIVE_HIGH>, <14 GPIO_ACTIVE_HIGH>, <15 GPIO_ACTIVE_HIGH>;
-               output-high;
-       };
 };
 
 &main_pmx0 {
index 83bbf94..1944616 100644 (file)
@@ -84,7 +84,9 @@
                                        <0x10 0x3>, <0x14 0x3>, /* SERDES1 lane0/1 select */
                                        <0x18 0x3>, <0x1c 0x3>, /* SERDES1 lane2/3 select */
                                        <0x20 0x3>, <0x24 0x3>, /* SERDES2 lane0/1 select */
-                                       <0x28 0x3>, <0x2c 0x3>; /* SERDES2 lane2/3 select */
+                                       <0x28 0x3>, <0x2c 0x3>, /* SERDES2 lane2/3 select */
+                                       <0x40 0x3>, <0x44 0x3>, /* SERDES4 lane0/1 select */
+                                       <0x48 0x3>, <0x4c 0x3>; /* SERDES4 lane2/3 select */
                        idle-states = <J784S4_SERDES0_LANE0_PCIE1_LANE0>,
                                      <J784S4_SERDES0_LANE1_PCIE1_LANE1>,
                                      <J784S4_SERDES0_LANE2_IP3_UNUSED>,
                ranges;
                #interrupt-cells = <3>;
                interrupt-controller;
-               reg = <0x00 0x01800000 0x00 0x200000>, /* GICD */
+               reg = <0x00 0x01800000 0x00 0x10000>, /* GICD */
                      <0x00 0x01900000 0x00 0x100000>, /* GICR */
                      <0x00 0x6f000000 0x00 0x2000>,   /* GICC */
                      <0x00 0x6f010000 0x00 0x1000>,   /* GICH */
diff --git a/src/arm64/xilinx/versal-net-clk.dtsi b/src/arm64/xilinx/versal-net-clk.dtsi
new file mode 100644 (file)
index 0000000..b7a8a1a
--- /dev/null
@@ -0,0 +1,231 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for Xilinx Versal NET fixed clock
+ *
+ * (C) Copyright 2022, Xilinx, Inc.
+ * (C) Copyright 2022 - 2025, Advanced Micro Devices, Inc.
+ *
+ * Michal Simek <michal.simek@amd.com>
+ */
+
+/ {
+       clk60: clk60 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <60000000>;
+       };
+
+       clk100: clk100 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <100000000>;
+       };
+
+       clk125: clk125 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <125000000>;
+       };
+
+       clk150: clk150 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <150000000>;
+       };
+
+       clk160: clk160 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <160000000>;
+       };
+
+       clk200: clk200 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <200000000>;
+       };
+
+       clk250: clk250 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <250000000>;
+       };
+
+       clk300: clk300 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <300000000>;
+       };
+
+       clk450: clk450 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <450000000>;
+       };
+
+       clk1200: clk1200 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <1200000000>;
+       };
+
+       firmware {
+               versal_net_firmware: versal-net-firmware {
+                       compatible = "xlnx,versal-net-firmware", "xlnx,versal-firmware";
+                       bootph-all;
+                       method = "smc";
+               };
+       };
+};
+
+&adma0 {
+       clocks = <&clk450>, <&clk450>;
+};
+
+&adma1 {
+       clocks = <&clk450>, <&clk450>;
+};
+
+&adma2 {
+       clocks = <&clk450>, <&clk450>;
+};
+
+&adma3 {
+       clocks = <&clk450>, <&clk450>;
+};
+
+&adma4 {
+       clocks = <&clk450>, <&clk450>;
+};
+
+&adma5 {
+       clocks = <&clk450>, <&clk450>;
+};
+
+&adma6 {
+       clocks = <&clk450>, <&clk450>;
+};
+
+&adma7 {
+       clocks = <&clk450>, <&clk450>;
+};
+
+&can0 {
+       clocks = <&clk160>, <&clk160>;
+};
+
+&can1 {
+       clocks = <&clk160>, <&clk160>;
+};
+
+&gem0 {
+       clocks = <&clk125>, <&clk125>, <&clk125>, <&clk125>, <&clk250>;
+};
+
+&gem1 {
+       clocks = <&clk125>, <&clk125>, <&clk125>, <&clk125>, <&clk250>;
+};
+
+&gpio0 {
+       clocks = <&clk100>;
+};
+
+&gpio1 {
+       clocks = <&clk100>;
+};
+
+&i2c0 {
+       clocks = <&clk100>;
+};
+
+&i2c1 {
+       clocks = <&clk100>;
+};
+
+&i3c0 {
+       clocks = <&clk100>;
+};
+
+&i3c1 {
+       clocks = <&clk100>;
+};
+
+&ospi {
+       clocks = <&clk200>;
+};
+
+&qspi {
+       clocks = <&clk300>, <&clk300>;
+};
+
+&rtc {
+       /* Nothing */
+};
+
+&sdhci0 {
+       clocks = <&clk200>, <&clk200>, <&clk1200>;
+};
+
+&sdhci1 {
+       clocks = <&clk200>, <&clk200>, <&clk1200>;
+};
+
+&serial0 {
+       clocks = <&clk100>, <&clk100>;
+};
+
+&serial1 {
+       clocks = <&clk100>, <&clk100>;
+};
+
+&spi0 {
+       clocks = <&clk200>, <&clk200>;
+};
+
+&spi1 {
+       clocks = <&clk200>, <&clk200>;
+};
+
+&ttc0 {
+       clocks = <&clk150>;
+};
+
+&usb0 {
+       clocks = <&clk60>, <&clk60>;
+};
+
+&dwc3_0 {
+       clocks = <&clk60>;
+};
+
+&usb1 {
+       clocks = <&clk60>, <&clk60>;
+};
+
+&dwc3_1 {
+       clocks = <&clk60>;
+};
+
+&wwdt0 {
+       clocks = <&clk150>;
+};
+
+&wwdt1 {
+       clocks = <&clk150>;
+};
+
+&wwdt2 {
+       clocks = <&clk150>;
+};
+
+&wwdt3 {
+       clocks = <&clk150>;
+};
+
+&lpd_wwdt0 {
+       clocks = <&clk150>;
+};
+
+&lpd_wwdt1 {
+       clocks = <&clk150>;
+};
diff --git a/src/arm64/xilinx/versal-net-vn-x-b2197-01-revA.dts b/src/arm64/xilinx/versal-net-vn-x-b2197-01-revA.dts
new file mode 100644 (file)
index 0000000..06b2301
--- /dev/null
@@ -0,0 +1,116 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for Xilinx Versal Net VNX board revA
+ *
+ * (C) Copyright 2022, Xilinx, Inc.
+ * (C) Copyright 2022 - 2025, Advanced Micro Devices, Inc.
+ *
+ * Michal Simek <michal.simek@amd.com>
+ */
+
+/dts-v1/;
+
+#include "versal-net.dtsi"
+#include "versal-net-clk.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       compatible = "xlnx,versal-net-vnx-revA", "xlnx,versal-net-vnx", "xlnx,versal-net";
+       model = "Xilinx Versal NET VNX revA";
+       dma-coherent;
+
+       memory: memory@0 {
+               reg = <0 0 0 0x80000000>;
+               device_type = "memory";
+       };
+
+       memory_hi: memory@800000000 {
+               reg = <8 0 3 0x80000000>;
+               device_type = "memory";
+       };
+
+       memory_hi2: memory@50000000000 {
+               reg = <0x500 0 4 0>;
+               device_type = "memory";
+       };
+
+       chosen {
+               bootargs = "console=ttyAMA1,115200n8";
+               stdout-path = "serial1:115200n8";
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+               rsc_tbl_carveout: rproc@bbf14000 {
+                       reg = <0 0xbbf14000 0 0x1000>;
+                       no-map;
+               };
+               rpu0vdev0vring0: rpu0vdev0vring0@bbf15000 {
+                       reg = <0 0xbbf15000 0 0x1000>;
+                       no-map;
+               };
+               rpu0vdev0vring1: rpu0vdev0vring1@bbf16000 {
+                       reg = <0 0xbbf16000 0 0x1000>;
+                       no-map;
+               };
+               rpu0vdev0buffer: rpu0vdev0buffer@bbf17000 {
+                       reg = <0 0xbbf17000 0 0xD000>;
+                       no-map;
+               };
+               reserve_others: reserveothers@0 {
+                       reg = <0 0x0 0 0x1c200000>;
+                       no-map;
+               };
+               pdi_update: pdiupdate@1c200000 {
+                       reg = <0 0x1c200000 0 0x6000000>;
+                       no-map;
+               };
+               reserve_optee_atf: reserveopteeatf@22200000 {
+                       reg = <0 0x22200000 0 0x4100000>;
+                       no-map;
+               };
+       };
+};
+
+&gem1 {
+       status = "okay";
+       iommus = <&smmu 0x235>;
+       phy-handle = <&phy>;
+       phy-mode = "rmii";
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               phy: ethernet-phy@4 {
+                       reg = <4>;
+               };
+       };
+};
+
+&ospi {
+       num-cs = <2>;
+       iommus = <&smmu 0x245>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+};
+
+&sdhci1 {
+       status = "okay";
+       iommus = <&smmu 0x243>;
+       non-removable;
+       disable-wp;
+       no-sd;
+       no-sdio;
+       cap-mmc-hw-reset;
+       bus-width = <8>;
+       no-1-8-v;
+};
+
+&serial1 {
+       status = "okay";
+};
+
+&smmu {
+       status = "okay";
+};
diff --git a/src/arm64/xilinx/versal-net.dtsi b/src/arm64/xilinx/versal-net.dtsi
new file mode 100644 (file)
index 0000000..fc9f49e
--- /dev/null
@@ -0,0 +1,752 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for Xilinx Versal NET
+ *
+ * (C) Copyright 2022, Xilinx, Inc.
+ * (C) Copyright 2022 - 2025, Advanced Micro Devices, Inc.
+ *
+ * Michal Simek <michal.simek@amd.com>
+ */
+
+/dts-v1/;
+
+/ {
+       compatible = "xlnx,versal-net";
+       model = "Xilinx Versal NET";
+       #address-cells = <2>;
+       #size-cells = <2>;
+       interrupt-parent = <&gic>;
+
+       options {
+               u-boot {
+                       compatible = "u-boot,config";
+                       bootscr-address = /bits/ 64 <0x20000000>;
+               };
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu100>;
+                               };
+                               core2 {
+                                       cpu = <&cpu200>;
+                               };
+                               core3 {
+                                       cpu = <&cpu300>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&cpu10000>;
+                               };
+
+                               core1 {
+                                       cpu = <&cpu10100>;
+                               };
+
+                               core2 {
+                                       cpu = <&cpu10200>;
+                               };
+
+                               core3 {
+                                       cpu = <&cpu10300>;
+                               };
+                       };
+                       cluster2 {
+                               core0 {
+                                       cpu = <&cpu20000>;
+                               };
+
+                               core1 {
+                                       cpu = <&cpu20100>;
+                               };
+
+                               core2 {
+                                       cpu = <&cpu20200>;
+                               };
+
+                               core3 {
+                                       cpu = <&cpu20300>;
+                               };
+                       };
+                       cluster3 {
+                               core0 {
+                                       cpu = <&cpu30000>;
+                               };
+
+                               core1 {
+                                       cpu = <&cpu30100>;
+                               };
+
+                               core2 {
+                                       cpu = <&cpu30200>;
+                               };
+
+                               core3 {
+                                       cpu = <&cpu30300>;
+                               };
+                       };
+
+               };
+
+               cpu0: cpu@0 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu100: cpu@100 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x100>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu200: cpu@200 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x200>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu300: cpu@300 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x300>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu10000: cpu@10000 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x10000>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu10100: cpu@10100 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x10100>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu10200: cpu@10200 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x10200>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu10300: cpu@10300 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x10300>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu20000: cpu@20000 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x20000>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu20100: cpu@20100 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x20100>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu20200: cpu@20200 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x20200>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu20300: cpu@20300 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x20300>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu30000: cpu@30000 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x30000>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu30100: cpu@30100 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x30100>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu30200: cpu@30200 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x30200>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               cpu30300: cpu@30300 {
+                       compatible = "arm,cortex-a78";
+                       device_type = "cpu";
+                       enable-method = "psci";
+                       reg = <0x30300>;
+                       operating-points-v2 = <&cpu_opp_table>;
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+               idle-states {
+                       entry-method = "psci";
+
+                       CPU_SLEEP_0: cpu-sleep-0 {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x40000000>;
+                               local-timer-stop;
+                               entry-latency-us = <300>;
+                               exit-latency-us = <600>;
+                               min-residency-us = <10000>;
+                       };
+               };
+       };
+
+       cpu_opp_table: opp-table {
+               compatible = "operating-points-v2";
+               opp-1066000000 {
+                       opp-hz = /bits/ 64 <1066000000>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+               opp-1866000000 {
+                       opp-hz = /bits/ 64 <1866000000>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+               opp-1900000000 {
+                       opp-hz = /bits/ 64 <1900000000>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+               opp-1999000000 {
+                       opp-hz = /bits/ 64 <1999000000>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+               opp-2050000000 {
+                       opp-hz = /bits/ 64 <2050000000>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+               opp-2100000000 {
+                       opp-hz = /bits/ 64 <2100000000>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+               opp-2200000000 {
+                       opp-hz = /bits/ 64 <2200000000>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+               opp-2400000000 {
+                       opp-hz = /bits/ 64 <2400000000>;
+                       opp-microvolt = <1000000>;
+                       clock-latency-ns = <500000>;
+               };
+       };
+
+       aliases {
+               serial0 = &serial0;
+               serial1 = &serial1;
+               serial2 = &dcc;
+               mmc0 = &sdhci0;
+               mmc1 = &sdhci1;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               rtc = &rtc;
+               usb0 = &usb0;
+               usb1 = &usb1;
+               spi0 = &ospi;
+               spi1 = &qspi;
+       };
+
+       dcc: dcc {
+               compatible = "arm,dcc";
+               status = "disabled";
+               bootph-all;
+       };
+
+       firmware {
+               psci {
+                       compatible = "arm,psci-1.0";
+                       method = "smc";
+               };
+       };
+
+       fpga: fpga-region {
+               compatible = "fpga-region";
+               fpga-mgr = <&versal_fpga>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+       };
+
+       timer: timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <1 13 4>, <1 14 4>, <1 11 4>, <1 10 4>;
+       };
+
+       versal_fpga: versal-fpga {
+               compatible = "xlnx,versal-fpga";
+       };
+
+       amba: axi {
+               compatible = "simple-bus";
+               bootph-all;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               adma0: dma-controller@ebd00000 {
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       status = "disabled";
+                       reg = <0 0xebd00000 0 0x1000>;
+                       interrupts = <0 72 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       #dma-cells = <1>;
+                       xlnx,bus-width = <64>;
+               };
+
+               adma1: dma-controller@ebd10000 {
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       status = "disabled";
+                       reg = <0 0xebd10000 0 0x1000>;
+                       interrupts = <0 73 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       #dma-cells = <1>;
+                       xlnx,bus-width = <64>;
+               };
+
+               adma2: dma-controller@ebd20000 {
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       status = "disabled";
+                       reg = <0 0xebd20000 0 0x1000>;
+                       interrupts = <0 74 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       #dma-cells = <1>;
+                       xlnx,bus-width = <64>;
+               };
+
+               adma3: dma-controller@ebd30000 {
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       status = "disabled";
+                       reg = <0 0xebd30000 0 0x1000>;
+                       interrupts = <0 75 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       #dma-cells = <1>;
+                       xlnx,bus-width = <64>;
+               };
+
+               adma4: dma-controller@ebd40000 {
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       status = "disabled";
+                       reg = <0 0xebd40000 0 0x1000>;
+                       interrupts = <0 76 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       #dma-cells = <1>;
+                       xlnx,bus-width = <64>;
+               };
+
+               adma5: dma-controller@ebd50000 {
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       status = "disabled";
+                       reg = <0 0xebd50000 0 0x1000>;
+                       interrupts = <0 77 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       #dma-cells = <1>;
+                       xlnx,bus-width = <64>;
+               };
+
+               adma6: dma-controller@ebd60000 {
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       status = "disabled";
+                       reg = <0 0xebd60000 0 0x1000>;
+                       interrupts = <0 78 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       #dma-cells = <1>;
+                       xlnx,bus-width = <64>;
+               };
+
+               adma7: dma-controller@ebd70000 {
+                       compatible = "xlnx,zynqmp-dma-1.0";
+                       status = "disabled";
+                       reg = <0 0xebd70000 0 0x1000>;
+                       interrupts = <0 79 4>;
+                       clock-names = "clk_main", "clk_apb";
+                       #dma-cells = <1>;
+                       xlnx,bus-width = <64>;
+               };
+
+               can0: can@f1980000 {
+                       compatible = "xlnx,canfd-2.0";
+                       status = "disabled";
+                       reg = <0 0xf1980000 0 0x6000>;
+                       interrupts = <0 27 4>;
+                       clock-names = "can_clk", "s_axi_aclk";
+                       rx-fifo-depth = <64>;
+                       tx-mailbox-count = <32>;
+               };
+
+               can1: can@f1990000 {
+                       compatible = "xlnx,canfd-2.0";
+                       status = "disabled";
+                       reg = <0 0xf1990000 0 0x6000>;
+                       interrupts = <0 28 4>;
+                       clock-names = "can_clk", "s_axi_aclk";
+                       rx-fifo-depth = <64>;
+                       tx-mailbox-count = <32>;
+               };
+
+               gem0: ethernet@f19e0000 {
+                       compatible = "xlnx,versal-gem", "cdns,gem";
+                       status = "disabled";
+                       reg = <0 0xf19e0000 0 0x1000>;
+                       interrupts = <0 39 4>, <0 39 4>;
+                       clock-names = "pclk", "hclk", "tx_clk", "rx_clk",
+                                     "tsu_clk";
+               };
+
+               gem1: ethernet@f19f0000 {
+                       compatible = "xlnx,versal-gem", "cdns,gem";
+                       status = "disabled";
+                       reg = <0 0xf19f0000 0 0x1000>;
+                       interrupts = <0 41 4>, <0 41 4>;
+                       clock-names = "pclk", "hclk", "tx_clk", "rx_clk",
+                                     "tsu_clk";
+               };
+
+               gic: interrupt-controller@e2000000 {
+                       compatible = "arm,gic-v3";
+                       #interrupt-cells = <3>;
+                       reg = <0 0xe2000000 0 0x10000>,
+                             <0 0xe2060000 0 0x200000>;
+                       interrupt-controller;
+                       interrupts = <1 9 4>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+                       its: msi-controller@e2040000 {
+                               compatible = "arm,gic-v3-its";
+                               msi-controller;
+                               #msi-cells = <1>;
+                               reg = <0 0xe2040000 0 0x20000>;
+                       };
+               };
+
+               gpio0: gpio@f19d0000 {
+                       compatible = "xlnx,versal-gpio-1.0";
+                       status = "disabled";
+                       reg = <0 0xf19d0000 0 0x1000>;
+                       interrupts = <0 20 4>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+               };
+
+               gpio1: gpio@f1020000 {
+                       compatible = "xlnx,pmc-gpio-1.0";
+                       status = "disabled";
+                       reg = <0 0xf1020000 0 0x1000>;
+                       interrupts = <0 180 4>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+               };
+
+               i2c0: i2c@f1940000 {
+                       compatible = "cdns,i2c-r1p14";
+                       status = "disabled";
+                       reg = <0 0xf1940000 0 0x1000>;
+                       interrupts = <0 21 4>;
+                       clock-frequency = <400000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c1: i2c@f1950000 {
+                       compatible = "cdns,i2c-r1p14";
+                       status = "disabled";
+                       reg = <0 0xf1950000 0 0x1000>;
+                       interrupts = <0 22 4>;
+                       clock-frequency = <400000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i3c0: i3c@f1948000 {
+                       compatible = "snps,dw-i3c-master-1.00a";
+                       status = "disabled";
+                       reg = <0 0xf1948000 0 0x1000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       interrupts = <0 21 4>;
+               };
+
+               i3c1: i3c@f1958000 {
+                       compatible = "snps,dw-i3c-master-1.00a";
+                       status = "disabled";
+                       reg = <0 0xf1958000 0 0x1000>;
+                       #address-cells = <3>;
+                       #size-cells = <0>;
+                       interrupts = <0 22 4>;
+               };
+
+               ospi: spi@f1010000 {
+                       compatible = "xlnx,versal-ospi-1.0", "cdns,qspi-nor";
+                       status = "disabled";
+                       reg = <0 0xf1010000 0 0x10000>,
+                             <0 0xc0000000 0 0x20000000>;
+                       interrupts = <0 182 4>;
+                       cdns,fifo-depth = <256>;
+                       cdns,fifo-width = <4>;
+                       cdns,is-dma = <1>; /* u-boot specific */
+                       cdns,trigger-address = <0xc0000000>;
+               };
+
+               qspi: spi@f1030000 {
+                       compatible = "xlnx,versal-qspi-1.0";
+                       status = "disabled";
+                       reg = <0 0xf1030000 0 0x1000>;
+                       interrupts = <0 183 4>;
+                       clock-names = "ref_clk", "pclk";
+               };
+
+               rtc: rtc@f12a0000 {
+                       compatible = "xlnx,zynqmp-rtc";
+                       status = "disabled";
+                       reg = <0 0xf12a0000 0 0x100>;
+                       interrupts = <0 200 4>, <0 201 4>;
+                       interrupt-names = "alarm", "sec";
+                       calibration = <0x8000>;
+               };
+
+               sdhci0: mmc@f1040000 {
+                       compatible = "xlnx,versal-8.9a", "arasan,sdhci-8.9a";
+                       status = "disabled";
+                       reg = <0 0xf1040000 0 0x10000>;
+                       interrupts = <0 184 4>;
+                       clock-names = "clk_xin", "clk_ahb", "gate";
+                       #clock-cells = <1>;
+                       clock-output-names = "clk_out_sd0", "clk_in_sd0";
+               };
+
+               sdhci1: mmc@f1050000 {
+                       compatible = "xlnx,versal-net-emmc";
+                       status = "disabled";
+                       reg = <0 0xf1050000 0 0x10000>;
+                       interrupts = <0 186 4>;
+                       clock-names = "clk_xin", "clk_ahb", "gate";
+                       #clock-cells = <1>;
+                       clock-output-names = "clk_out_sd1", "clk_in_sd1";
+               };
+
+               serial0: serial@f1920000 {
+                       bootph-all;
+                       compatible = "arm,pl011", "arm,primecell";
+                       status = "disabled";
+                       reg = <0 0xf1920000 0 0x1000>;
+                       interrupts = <0 25 4>;
+                       reg-io-width = <4>;
+                       clock-names = "uartclk", "apb_pclk";
+               };
+
+               serial1: serial@f1930000 {
+                       bootph-all;
+                       compatible = "arm,pl011", "arm,primecell";
+                       status = "disabled";
+                       reg = <0 0xf1930000 0 0x1000>;
+                       interrupts = <0 26 4>;
+                       reg-io-width = <4>;
+                       clock-names = "uartclk", "apb_pclk";
+               };
+
+               smmu: iommu@ec000000 {
+                       compatible = "arm,smmu-v3";
+                       status = "disabled";
+                       reg = <0 0xec000000 0 0x40000>;
+                       #iommu-cells = <1>;
+                       interrupt-names = "combined";
+                       interrupts = <0 169 4>;
+                       dma-coherent;
+               };
+
+               spi0: spi@f1960000 {
+                       compatible = "cdns,spi-r1p6";
+                       status = "disabled";
+                       interrupts = <0 23 4>;
+                       reg = <0 0xf1960000 0 0x1000>;
+                       clock-names = "ref_clk", "pclk";
+               };
+
+               spi1: spi@f1970000 {
+                       compatible = "cdns,spi-r1p6";
+                       status = "disabled";
+                       interrupts = <0 24 4>;
+                       reg = <0 0xf1970000 0 0x1000>;
+                       clock-names = "ref_clk", "pclk";
+               };
+
+               ttc0: timer@f1dc0000 {
+                       compatible = "cdns,ttc";
+                       status = "disabled";
+                       interrupts = <0 43 4>, <0 44 4>, <0 45 4>;
+                       timer-width = <32>;
+                       reg = <0x0 0xf1dc0000 0x0 0x1000>;
+               };
+
+               ttc1: timer@f1dd0000 {
+                       compatible = "cdns,ttc";
+                       status = "disabled";
+                       interrupts = <0 46 4>, <0 47 4>, <0 48 4>;
+                       timer-width = <32>;
+                       reg = <0x0 0xf1dd0000 0x0 0x1000>;
+               };
+
+               ttc2: timer@f1de0000 {
+                       compatible = "cdns,ttc";
+                       status = "disabled";
+                       interrupts = <0 49 4>, <0 50 4>, <0 51 4>;
+                       timer-width = <32>;
+                       reg = <0x0 0xf1de0000 0x0 0x1000>;
+               };
+
+               ttc3: timer@f1df0000 {
+                       compatible = "cdns,ttc";
+                       status = "disabled";
+                       interrupts = <0 52 4>, <0 53 4>, <0 54 4>;
+                       timer-width = <32>;
+                       reg = <0x0 0xf1df0000 0x0 0x1000>;
+               };
+
+               usb0: usb@f1e00000 {
+                       compatible = "xlnx,versal-dwc3";
+                       status = "disabled";
+                       reg = <0 0xf1e00000 0 0x100>;
+                       clock-names = "bus_clk", "ref_clk";
+                       ranges;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+
+                       dwc3_0: usb@f1b00000  {
+                               compatible = "snps,dwc3";
+                               status = "disabled";
+                               reg = <0 0xf1b00000 0 0x10000>;
+                               interrupt-names = "host", "peripheral", "otg", "wakeup";
+                               interrupts = <0 29 4>, <0 29 4>, <0 33 4>, <0 98 4>;
+                               snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
+                               snps,quirk-frame-length-adjustment = <0x20>;
+                               dr_mode = "peripheral";
+                               maximum-speed = "high-speed";
+                               snps,usb3_lpm_capable;
+                               clock-names = "ref";
+                       };
+               };
+
+               usb1: usb@f1e10000 {
+                       compatible = "xlnx,versal-dwc3";
+                       status = "disabled";
+                       reg = <0x0 0xf1e10000 0x0 0x100>;
+                       clock-names = "bus_clk", "ref_clk";
+                       ranges;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+
+                       dwc3_1: usb@f1c00000  {
+                               compatible = "snps,dwc3";
+                               status = "disabled";
+                               reg = <0x0 0xf1c00000 0x0 0x10000>;
+                               interrupt-names = "host", "peripheral", "otg", "wakeup";
+                               interrupts = <0 34 4>, <0 34 4>, <0 38 4>, <0 99 4>;
+                               snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
+                               snps,quirk-frame-length-adjustment = <0x20>;
+                               dr_mode = "host";
+                               maximum-speed = "high-speed";
+                               snps,usb3_lpm_capable;
+                               clock-names = "ref";
+                       };
+               };
+
+               wwdt0: watchdog@ecc10000 {
+                       compatible = "xlnx,versal-wwdt";
+                       status = "disabled";
+                       reg = <0 0xecc10000 0 0x10000>;
+                       timeout-sec = <30>;
+               };
+
+               wwdt1: watchdog@ecd10000 {
+                       compatible = "xlnx,versal-wwdt";
+                       status = "disabled";
+                       reg = <0 0xecd10000 0 0x10000>;
+                       timeout-sec = <30>;
+               };
+
+               wwdt2: watchdog@ece10000 {
+                       compatible = "xlnx,versal-wwdt";
+                       status = "disabled";
+                       reg = <0 0xece10000 0 0x10000>;
+                       timeout-sec = <30>;
+               };
+
+               wwdt3: watchdog@ecf10000 {
+                       compatible = "xlnx,versal-wwdt";
+                       status = "disabled";
+                       reg = <0 0xecf10000 0 0x10000>;
+                       timeout-sec = <30>;
+               };
+
+               lpd_wwdt0: watchdog@ea420000 {
+                       compatible = "xlnx,versal-wwdt";
+                       status = "disabled";
+                       reg = <0 0xea420000 0 0x10000>;
+                       timeout-sec = <30>;
+               };
+
+               lpd_wwdt1: watchdog@ea430000 {
+                       compatible = "xlnx,versal-wwdt";
+                       status = "disabled";
+                       reg = <0 0xea430000 0 0x10000>;
+                       timeout-sec = <30>;
+               };
+       };
+};
diff --git a/src/arm64/xilinx/xlnx-zynqmp-clk.h b/src/arm64/xilinx/xlnx-zynqmp-clk.h
new file mode 100644 (file)
index 0000000..0aa17f2
--- /dev/null
@@ -0,0 +1,126 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Xilinx Zynq MPSoC Firmware layer
+ *
+ *  Copyright (C) 2014-2018 Xilinx, Inc.
+ *
+ */
+
+#ifndef _XLNX_ZYNQMP_CLK_H
+#define _XLNX_ZYNQMP_CLK_H
+
+#define IOPLL                  0
+#define RPLL                   1
+#define APLL                   2
+#define DPLL                   3
+#define VPLL                   4
+#define IOPLL_TO_FPD           5
+#define RPLL_TO_FPD            6
+#define APLL_TO_LPD            7
+#define DPLL_TO_LPD            8
+#define VPLL_TO_LPD            9
+#define ACPU                   10
+#define ACPU_HALF              11
+#define DBF_FPD                        12
+#define DBF_LPD                        13
+#define DBG_TRACE              14
+#define DBG_TSTMP              15
+#define DP_VIDEO_REF           16
+#define DP_AUDIO_REF           17
+#define DP_STC_REF             18
+#define GDMA_REF               19
+#define DPDMA_REF              20
+#define DDR_REF                        21
+#define SATA_REF               22
+#define PCIE_REF               23
+#define GPU_REF                        24
+#define GPU_PP0_REF            25
+#define GPU_PP1_REF            26
+#define TOPSW_MAIN             27
+#define TOPSW_LSBUS            28
+#define GTGREF0_REF            29
+#define LPD_SWITCH             30
+#define LPD_LSBUS              31
+#define USB0_BUS_REF           32
+#define USB1_BUS_REF           33
+#define USB3_DUAL_REF          34
+#define USB0                   35
+#define USB1                   36
+#define CPU_R5                 37
+#define CPU_R5_CORE            38
+#define CSU_SPB                        39
+#define CSU_PLL                        40
+#define PCAP                   41
+#define IOU_SWITCH             42
+#define GEM_TSU_REF            43
+#define GEM_TSU                        44
+#define GEM0_TX                        45
+#define GEM1_TX                        46
+#define GEM2_TX                        47
+#define GEM3_TX                        48
+#define GEM0_RX                        49
+#define GEM1_RX                        50
+#define GEM2_RX                        51
+#define GEM3_RX                        52
+#define QSPI_REF               53
+#define SDIO0_REF              54
+#define SDIO1_REF              55
+#define UART0_REF              56
+#define UART1_REF              57
+#define SPI0_REF               58
+#define SPI1_REF               59
+#define NAND_REF               60
+#define I2C0_REF               61
+#define I2C1_REF               62
+#define CAN0_REF               63
+#define CAN1_REF               64
+#define CAN0                   65
+#define CAN1                   66
+#define DLL_REF                        67
+#define ADMA_REF               68
+#define TIMESTAMP_REF          69
+#define AMS_REF                        70
+#define PL0_REF                        71
+#define PL1_REF                        72
+#define PL2_REF                        73
+#define PL3_REF                        74
+#define WDT                    75
+#define IOPLL_INT              76
+#define IOPLL_PRE_SRC          77
+#define IOPLL_HALF             78
+#define IOPLL_INT_MUX          79
+#define IOPLL_POST_SRC         80
+#define RPLL_INT               81
+#define RPLL_PRE_SRC           82
+#define RPLL_HALF              83
+#define RPLL_INT_MUX           84
+#define RPLL_POST_SRC          85
+#define APLL_INT               86
+#define APLL_PRE_SRC           87
+#define APLL_HALF              88
+#define APLL_INT_MUX           89
+#define APLL_POST_SRC          90
+#define DPLL_INT               91
+#define DPLL_PRE_SRC           92
+#define DPLL_HALF              93
+#define DPLL_INT_MUX           94
+#define DPLL_POST_SRC          95
+#define VPLL_INT               96
+#define VPLL_PRE_SRC           97
+#define VPLL_HALF              98
+#define VPLL_INT_MUX           99
+#define VPLL_POST_SRC          100
+#define CAN0_MIO               101
+#define CAN1_MIO               102
+#define ACPU_FULL              103
+#define GEM0_REF               104
+#define GEM1_REF               105
+#define GEM2_REF               106
+#define GEM3_REF               107
+#define GEM0_REF_UNG           108
+#define GEM1_REF_UNG           109
+#define GEM2_REF_UNG           110
+#define GEM3_REF_UNG           111
+#define LPD_WDT                        112
+
+#endif /* _XLNX_ZYNQMP_CLK_H */
index 60d1b1a..52e122f 100644 (file)
@@ -8,41 +8,46 @@
  * Michal Simek <michal.simek@amd.com>
  */
 
-#include <dt-bindings/clock/xlnx-zynqmp-clk.h>
+#include "xlnx-zynqmp-clk.h"
 / {
-       pss_ref_clk: pss_ref_clk {
+       pss_ref_clk: pss-ref-clk {
                bootph-all;
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <33333333>;
+               clock-output-names = "pss_ref_clk";
        };
 
-       video_clk: video_clk {
+       video_clk: video-clk {
                bootph-all;
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <27000000>;
+               clock-output-names = "video_clk";
        };
 
-       pss_alt_ref_clk: pss_alt_ref_clk {
+       pss_alt_ref_clk: pss-alt-ref-clk {
                bootph-all;
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <0>;
+               clock-output-names = "pss_alt_ref_clk";
        };
 
-       gt_crx_ref_clk: gt_crx_ref_clk {
+       gt_crx_ref_clk: gt-crx-ref-clk {
                bootph-all;
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <108000000>;
+               clock-output-names = "gt_crx_ref_clk";
        };
 
-       aux_ref_clk: aux_ref_clk {
+       aux_ref_clk: aux-ref-clk {
                bootph-all;
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <27000000>;
+               clock-output-names = "aux_ref_clk";
        };
 };
 
index 23cf26c..3514ea7 100644 (file)
 
        #address-cells = <1>;
        #size-cells = <0>;
-       spidev@0 {
-               compatible = "rohm,dh2228fv";
-               spi-max-frequency = <100000000>;
-               reg = <0>;
-       };
 };
 
 &ehci0 {
index 5d33f26..8455778 100644 (file)
@@ -91,7 +91,7 @@
                        "MIC1N", "Built-in Mic";
                simple-audio-card,pin-switches = "Speaker", "Headphones";
 
-               simple-audio-card,hp-det-gpio = <&gpf 21 GPIO_ACTIVE_LOW>;
+               simple-audio-card,hp-det-gpios = <&gpf 21 GPIO_ACTIVE_LOW>;
                simple-audio-card,aux-devs = <&speaker_amp>, <&headphones_amp>;
 
                simple-audio-card,bitclock-master = <&dai_codec>;
index e8df70d..6d2c8ae 100644 (file)
                        "Speaker", "OUTR";
                simple-audio-card,pin-switches = "Speaker";
 
-               simple-audio-card,hp-det-gpio = <&gpd 16 GPIO_ACTIVE_LOW>;
+               simple-audio-card,hp-det-gpios = <&gpd 16 GPIO_ACTIVE_LOW>;
                simple-audio-card,aux-devs = <&amp>;
 
                simple-audio-card,bitclock-master = <&dai_codec>;
index 4a1a43f..dabd5ed 100644 (file)
                #interrupt-cells = <1>;
        };
 
+       coherency-manager {
+               compatible = "mobileye,eyeq6-cm";
+       };
+
        xtal: clock-30000000 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
index 18107ca..7743d01 100644 (file)
@@ -5,7 +5,7 @@
 
 /dts-v1/;
 
-/include/ "mt7628a.dtsi"
+#include "mt7628a.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
index 1f6e532..d660459 100644 (file)
@@ -1,4 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
+#include <dt-bindings/clock/mediatek,mtmips-sysc.h>
+
 / {
        #address-cells = <1>;
        #size-cells = <1>;
                #address-cells = <1>;
                #size-cells = <1>;
 
-               sysc@0 {
-                       compatible = "ralink,mt7620a-sysc";
+               sysc: syscon@0 {
+                       compatible = "ralink,mt7620-sysc", "syscon";
                        reg = <0x0 0x100>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                intc: intc@200 {
@@ -50,6 +54,8 @@
                        compatible = "ralink,mt7620a-uart", "ralink,rt2880-uart", "ns16550a";
                        reg = <0xc00 0x100>;
 
+                       clocks = <&sysc MT7620_CLK_UARTLITE>;
+
                        interrupt-parent = <&intc>;
                        interrupts = <12>;
 
index 8de8f89..da483ee 100644 (file)
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 /dts-v1/;
 
-/include/ "mt7620a.dtsi"
+#include "mt7620a.dtsi"
 
 / {
        compatible = "ralink,mt7620a-eval-board", "ralink,mt7620a-soc";
index 45a15e0..0212700 100644 (file)
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: GPL-2.0
+#include <dt-bindings/clock/mediatek,mtmips-sysc.h>
 
 / {
        #address-cells = <1>;
                };
        };
 
-       resetc: reset-controller {
-               compatible = "ralink,rt2880-reset";
-               #reset-cells = <1>;
-       };
-
        cpuintc: interrupt-controller {
                #address-cells = <0>;
                #interrupt-cells = <1>;
                #address-cells = <1>;
                #size-cells = <1>;
 
-               sysc: system-controller@0 {
-                       compatible = "ralink,mt7620a-sysc", "syscon";
+               sysc: syscon@0 {
+                       compatible = "ralink,mt7628-sysc", "syscon";
                        reg = <0x0 0x60>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                pinmux: pinmux@60 {
                        compatible = "mediatek,mt7621-wdt";
                        reg = <0x100 0x30>;
 
-                       resets = <&resetc 8>;
+                       resets = <&sysc 8>;
                        reset-names = "wdt";
 
                        interrupt-parent = <&intc>;
                        interrupt-controller;
                        #interrupt-cells = <1>;
 
-                       resets = <&resetc 9>;
+                       resets = <&sysc 9>;
                        reset-names = "intc";
 
                        interrupt-parent = <&cpuintc>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&pinmux_spi_spi>;
 
-                       resets = <&resetc 18>;
+                       clocks = <&sysc MT76X8_CLK_SPI1>;
+
+                       resets = <&sysc 18>;
                        reset-names = "spi";
 
                        #address-cells = <1>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&pinmux_i2c_i2c>;
 
-                       resets = <&resetc 16>;
+                       clocks = <&sysc MT76X8_CLK_I2C>;
+
+                       resets = <&sysc 16>;
                        reset-names = "i2c";
 
                        #address-cells = <1>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&pinmux_uart0_uart>;
 
-                       resets = <&resetc 12>;
+                       clocks = <&sysc MT76X8_CLK_UART0>;
+
+                       resets = <&sysc 12>;
                        reset-names = "uart0";
 
                        interrupt-parent = <&intc>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&pinmux_uart1_uart>;
 
-                       resets = <&resetc 19>;
+                       clocks = <&sysc MT76X8_CLK_UART1>;
+
+                       resets = <&sysc 19>;
                        reset-names = "uart1";
 
                        interrupt-parent = <&intc>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&pinmux_uart2_uart>;
 
-                       resets = <&resetc 20>;
+                       clocks = <&sysc MT76X8_CLK_UART2>;
+
+                       resets = <&sysc 20>;
                        reset-names = "uart2";
 
                        interrupt-parent = <&intc>;
                #phy-cells = <0>;
 
                ralink,sysctl = <&sysc>;
-               resets = <&resetc 22 &resetc 25>;
+               resets = <&sysc 22 &sysc 25>;
                reset-names = "host", "device";
        };
 
                compatible = "mediatek,mt7628-wmac";
                reg = <0x10300000 0x100000>;
 
+               clocks = <&sysc MT76X8_CLK_WMAC>;
+
                interrupt-parent = <&cpuintc>;
                interrupts = <6>;
 
index 5884fd4..51a40ab 100644 (file)
@@ -1,6 +1,6 @@
 /dts-v1/;
 
-/include/ "mt7628a.dtsi"
+#include "mt7628a.dtsi"
 
 / {
        compatible = "onion,omega2+", "ralink,mt7688a-soc", "ralink,mt7628a-soc";
index 8fc1987..1f2ea34 100644 (file)
@@ -1,4 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
+#include <dt-bindings/clock/mediatek,mtmips-sysc.h>
+
 / {
        #address-cells = <1>;
        #size-cells = <1>;
                #address-cells = <1>;
                #size-cells = <1>;
 
-               sysc@0 {
-                       compatible = "ralink,rt2880-sysc";
+               sysc: syscon@0 {
+                       compatible = "ralink,rt2880-sysc", "syscon";
                        reg = <0x0 0x100>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                intc: intc@200 {
@@ -50,6 +54,8 @@
                        compatible = "ralink,rt2880-uart", "ns16550a";
                        reg = <0xc00 0x100>;
 
+                       clocks = <&sysc RT2880_CLK_UARTLITE>;
+
                        interrupt-parent = <&intc>;
                        interrupts = <8>;
 
index 759bc1d..9854a4b 100644 (file)
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 /dts-v1/;
 
-/include/ "rt2880.dtsi"
+#include "rt2880.dtsi"
 
 / {
        compatible = "ralink,rt2880-eval-board", "ralink,rt2880-soc";
index 2306233..a7d9bb9 100644 (file)
@@ -1,4 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
+#include <dt-bindings/clock/mediatek,mtmips-sysc.h>
+
 / {
        #address-cells = <1>;
        #size-cells = <1>;
                #address-cells = <1>;
                #size-cells = <1>;
 
-               sysc@0 {
-                       compatible = "ralink,rt3052-sysc", "ralink,rt3050-sysc";
+               sysc: syscon@0 {
+                       compatible = "ralink,rt3052-sysc", "ralink,rt3050-sysc", "syscon";
                        reg = <0x0 0x100>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                intc: intc@200 {
@@ -50,6 +54,8 @@
                        compatible = "ralink,rt3052-uart", "ralink,rt2880-uart", "ns16550a";
                        reg = <0xc00 0x100>;
 
+                       clocks = <&sysc RT305X_CLK_UARTLITE>;
+
                        interrupt-parent = <&intc>;
                        interrupts = <12>;
 
index 61132cf..11d111a 100644 (file)
@@ -1,4 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
+#include <dt-bindings/clock/mediatek,mtmips-sysc.h>
+
 / {
        #address-cells = <1>;
        #size-cells = <1>;
                #address-cells = <1>;
                #size-cells = <1>;
 
-               sysc@0 {
-                       compatible = "ralink,rt3883-sysc", "ralink,rt3050-sysc";
+               sysc: syscon@0 {
+                       compatible = "ralink,rt3883-sysc", "syscon";
                        reg = <0x0 0x100>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                intc: intc@200 {
@@ -50,6 +54,8 @@
                        compatible = "ralink,rt3883-uart", "ralink,rt2880-uart", "ns16550a";
                        reg = <0xc00 0x100>;
 
+                       clocks = <&sysc RT3883_CLK_UARTLITE>;
+
                        interrupt-parent = <&intc>;
                        interrupts = <12>;
 
index c22bc84..a095a1f 100644 (file)
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 /dts-v1/;
 
-/include/ "rt3883.dtsi"
+#include "rt3883.dtsi"
 
 / {
        compatible = "ralink,rt3883-eval-board", "ralink,rt3883-soc";
index 1cdbb09..fab3d55 100644 (file)
@@ -2,9 +2,10 @@
 
 /dts-v1/;
 
-#include "rtl83xx.dtsi"
 #include "rtl838x.dtsi"
 
+#include <dt-bindings/gpio/gpio.h>
+
 / {
        model = "Cisco SG220-26";
        compatible = "cisco,sg220-26", "realtek,rtl8382-soc";
                device_type = "memory";
                reg = <0x0 0x8000000>;
        };
+
+       gpio-restart {
+               compatible = "gpio-restart";
+               gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
+               priority = <192>;
+               open-source;
+       };
 };
 
 &uart0 {
index 722106e..ce522a6 100644 (file)
@@ -1,6 +1,14 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
 
 / {
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
@@ -9,8 +17,7 @@
                        device_type = "cpu";
                        compatible = "mips,mips4KEc";
                        reg = <0>;
-                       clocks = <&baseclk 0>;
-                       clock-names = "cpu";
+                       clocks = <&baseclk>;
                };
        };
 
                #clock-cells = <0>;
                clock-frequency = <500000000>;
        };
+
+       cpuintc: cpuintc {
+               compatible = "mti,cpu-interrupt-controller";
+               #address-cells = <0>;
+               #interrupt-cells = <1>;
+               interrupt-controller;
+       };
+
+       lx_clk: clock-lexra {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <200000000>;
+       };
+
+       soc@18000000 {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x0 0x18000000 0x10000>;
+
+               spi0: spi@1200 {
+                       compatible = "realtek,rtl8380-spi";
+                       reg = <0x1200 0x100>;
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               uart0: serial@2000 {
+                       compatible = "ns16550a";
+                       reg = <0x2000 0x100>;
+
+                       clocks = <&lx_clk>;
+
+                       interrupt-parent = <&intc>;
+                       interrupts = <31>;
+
+                       reg-io-width = <1>;
+                       reg-shift = <2>;
+                       fifo-size = <1>;
+                       no-loopback-test;
+
+                       status = "disabled";
+               };
+
+               uart1: serial@2100 {
+                       compatible = "ns16550a";
+                       reg = <0x2100 0x100>;
+
+                       clocks = <&lx_clk>;
+
+                       interrupt-parent = <&intc>;
+                       interrupts = <30>;
+
+                       reg-io-width = <1>;
+                       reg-shift = <2>;
+                       fifo-size = <1>;
+                       no-loopback-test;
+
+                       status = "disabled";
+               };
+
+               intc: interrupt-controller@3000 {
+                       compatible = "realtek,rtl8380-intc", "realtek,rtl-intc";
+                       reg = <0x3000 0x20>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+
+                       interrupt-parent = <&cpuintc>;
+                       interrupts = <2>, <3>, <4>, <5>, <6>;
+               };
+
+               watchdog: watchdog@3150 {
+                       compatible = "realtek,rtl8380-wdt";
+                       reg = <0x3150 0xc>;
+
+                       realtek,reset-mode = "soc";
+
+                       clocks = <&lx_clk>;
+                       timeout-sec = <20>;
+
+                       interrupt-parent = <&intc>;
+                       interrupt-names = "phase1", "phase2";
+                       interrupts = <19>, <18>;
+               };
+
+               gpio0: gpio@3500 {
+                       compatible = "realtek,rtl8380-gpio", "realtek,otto-gpio";
+                       reg = <0x3500 0x1c>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       ngpios = <24>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <23>;
+               };
+       };
 };
diff --git a/src/mips/realtek/rtl83xx.dtsi b/src/mips/realtek/rtl83xx.dtsi
deleted file mode 100644 (file)
index 03ddc61..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       aliases {
-               serial0 = &uart0;
-               serial1 = &uart1;
-       };
-
-       cpuintc: cpuintc {
-               compatible = "mti,cpu-interrupt-controller";
-               #address-cells = <0>;
-               #interrupt-cells = <1>;
-               interrupt-controller;
-       };
-
-       soc: soc {
-               compatible = "simple-bus";
-               #address-cells = <1>;
-               #size-cells = <1>;
-               ranges = <0x0 0x18000000 0x10000>;
-
-               uart0: serial@2000 {
-                       compatible = "ns16550a";
-                       reg = <0x2000 0x100>;
-
-                       clock-frequency = <200000000>;
-
-                       interrupt-parent = <&cpuintc>;
-                       interrupts = <31>;
-
-                       reg-io-width = <1>;
-                       reg-shift = <2>;
-                       fifo-size = <1>;
-                       no-loopback-test;
-
-                       status = "disabled";
-               };
-
-               uart1: serial@2100 {
-                       compatible = "ns16550a";
-                       reg = <0x2100 0x100>;
-
-                       clock-frequency = <200000000>;
-
-                       interrupt-parent = <&cpuintc>;
-                       interrupts = <30>;
-
-                       reg-io-width = <1>;
-                       reg-shift = <2>;
-                       fifo-size = <1>;
-                       no-loopback-test;
-
-                       status = "disabled";
-               };
-       };
-};
index 1757745..f2e57ea 100644 (file)
@@ -1,10 +1,23 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
 
-#include "rtl83xx.dtsi"
-
 / {
        compatible = "realtek,rtl9302-soc";
 
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+       };
+
+       cpuintc: cpuintc {
+               compatible = "mti,cpu-interrupt-controller";
+               #address-cells = <0>;
+               #interrupt-cells = <1>;
+               interrupt-controller;
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
@@ -13,8 +26,7 @@
                        device_type = "cpu";
                        compatible = "mips,mips34Kc";
                        reg = <0>;
-                       clocks = <&baseclk 0>;
-                       clock-names = "cpu";
+                       clocks = <&baseclk>;
                };
        };
 
                        status = "disabled";
                };
        };
-};
 
-&soc {
-       ranges = <0x0 0x18000000 0x20000>;
+       soc: soc@18000000 {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x0 0x18000000 0x20000>;
 
-       intc: interrupt-controller@3000 {
-               compatible = "realtek,rtl9300-intc", "realtek,rtl-intc";
-               reg = <0x3000 0x18>, <0x3018 0x18>;
-               interrupt-controller;
-               #interrupt-cells = <1>;
+               intc: interrupt-controller@3000 {
+                       compatible = "realtek,rtl9300-intc", "realtek,rtl-intc";
+                       reg = <0x3000 0x18>, <0x3018 0x18>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
 
-               interrupt-parent = <&cpuintc>;
-               interrupts = <2>, <3>, <4>, <5>, <6>, <7>;
-       };
+                       interrupt-parent = <&cpuintc>;
+                       interrupts = <2>, <3>, <4>, <5>, <6>, <7>;
+               };
 
-       spi0: spi@1200 {
-               compatible = "realtek,rtl8380-spi";
-               reg = <0x1200 0x100>;
+               spi0: spi@1200 {
+                       compatible = "realtek,rtl8380-spi";
+                       reg = <0x1200 0x100>;
 
-               #address-cells = <1>;
-               #size-cells = <0>;
-       };
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
 
-       timer0: timer@3200 {
-               compatible = "realtek,rtl9302-timer", "realtek,otto-timer";
-               reg = <0x3200 0x10>, <0x3210 0x10>, <0x3220 0x10>,
-                   <0x3230 0x10>, <0x3240 0x10>;
+               timer0: timer@3200 {
+                       compatible = "realtek,rtl9302-timer", "realtek,otto-timer";
+                       reg = <0x3200 0x10>, <0x3210 0x10>, <0x3220 0x10>,
+                           <0x3230 0x10>, <0x3240 0x10>;
 
-               interrupt-parent = <&intc>;
-               interrupts = <7>, <8>, <9>, <10>, <11>;
-               clocks = <&lx_clk>;
-       };
+                       interrupt-parent = <&intc>;
+                       interrupts = <7>, <8>, <9>, <10>, <11>;
+                       clocks = <&lx_clk>;
+               };
 
-       snand: spi@1a400 {
-               compatible = "realtek,rtl9301-snand";
-               reg = <0x1a400 0x44>;
-               interrupt-parent = <&intc>;
-               interrupts = <19>;
-               clocks = <&lx_clk>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               status = "disabled";
-       };
-};
+               snand: spi@1a400 {
+                       compatible = "realtek,rtl9301-snand";
+                       reg = <0x1a400 0x44>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <19>;
+                       clocks = <&lx_clk>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
 
-&uart0 {
-       /delete-property/ clock-frequency;
-       clocks = <&lx_clk>;
+               uart0: serial@2000 {
+                       compatible = "ns16550a";
+                       reg = <0x2000 0x100>;
 
-       interrupt-parent = <&intc>;
-       interrupts = <30>;
-};
+                       clocks = <&lx_clk>;
 
-&uart1 {
-       /delete-property/ clock-frequency;
-       clocks = <&lx_clk>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <30>;
 
-       interrupt-parent = <&intc>;
-       interrupts = <31>;
-};
+                       reg-io-width = <1>;
+                       reg-shift = <2>;
+                       fifo-size = <1>;
+                       no-loopback-test;
 
+                       status = "disabled";
+               };
+
+               uart1: serial@2100 {
+                       compatible = "ns16550a";
+                       reg = <0x2100 0x100>;
+
+                       clocks = <&lx_clk>;
+
+                       interrupt-parent = <&intc>;
+                       interrupts = <31>;
+
+                       reg-io-width = <1>;
+                       reg-shift = <2>;
+                       fifo-size = <1>;
+                       no-loopback-test;
+
+                       status = "disabled";
+               };
+       };
+};
index 269e930..c4e4d2a 100644 (file)
@@ -1,4 +1,5 @@
 /dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        #size-cells = <0x02>;
@@ -8,6 +9,7 @@
 
        aliases {
                serial0 = &UART0;
+               ethernet = &enet0;
        };
 
        reserved-memory {
 
                ibm,powerpc-cpu-features {
                        display-name = "Microwatt";
-                       isa = <3000>;
+                       isa = <3010>;
                        device_type = "cpu-features";
                        compatible = "ibm,powerpc-cpu-features";
 
                        mmu-radix {
                                isa = <3000>;
-                               usable-privilege = <2>;
+                               usable-privilege = <6>;
+                               os-support = <0>;
                        };
 
                        little-endian {
-                               isa = <2050>;
-                               usable-privilege = <3>;
+                               isa = <0>;
+                               usable-privilege = <7>;
+                               os-support = <0>;
                                hwcap-bit-nr = <1>;
                        };
 
                        cache-inhibited-large-page {
-                               isa = <2040>;
-                               usable-privilege = <2>;
+                               isa = <0>;
+                               usable-privilege = <6>;
+                               os-support = <0>;
                        };
 
                        fixed-point-v3 {
                                isa = <3000>;
-                               usable-privilege = <3>;
+                               usable-privilege = <7>;
                        };
 
                        no-execute {
-                               isa = <2010>;
+                               isa = <0x00>;
                                usable-privilege = <2>;
+                               os-support = <0>;
                        };
 
                        floating-point {
+                               hfscr-bit-nr = <0>;
                                hwcap-bit-nr = <27>;
                                isa = <0>;
-                               usable-privilege = <3>;
+                               usable-privilege = <7>;
+                               hv-support = <1>;
+                               os-support = <0>;
+                       };
+
+                       prefixed-instructions {
+                               hfscr-bit-nr = <13>;
+                               fscr-bit-nr = <13>;
+                               isa = <3010>;
+                               usable-privilege = <7>;
+                               os-support = <1>;
+                               hv-support = <1>;
+                       };
+
+                       tar {
+                               hfscr-bit-nr = <8>;
+                               fscr-bit-nr = <8>;
+                               isa = <2070>;
+                               usable-privilege = <7>;
+                               os-support = <1>;
+                               hv-support = <1>;
+                               hwcap-bit-nr = <58>;
+                       };
+
+                       control-register {
+                               isa = <0>;
+                               usable-privilege = <7>;
+                       };
+
+                       system-call-vectored {
+                               isa = <3000>;
+                               usable-privilege = <7>;
+                               os-support = <1>;
+                               fscr-bit-nr = <12>;
+                               hwcap-bit-nr = <52>;
                        };
                };
 
                        ibm,mmu-lpid-bits = <12>;
                        ibm,mmu-pid-bits = <20>;
                };
+
+               PowerPC,Microwatt@1 {
+                       i-cache-sets = <2>;
+                       ibm,dec-bits = <64>;
+                       reservation-granule-size = <64>;
+                       clock-frequency = <100000000>;
+                       timebase-frequency = <100000000>;
+                       i-tlb-sets = <1>;
+                       ibm,ppc-interrupt-server#s = <1>;
+                       i-cache-block-size = <64>;
+                       d-cache-block-size = <64>;
+                       d-cache-sets = <2>;
+                       i-tlb-size = <64>;
+                       cpu-version = <0x990000>;
+                       status = "okay";
+                       i-cache-size = <0x1000>;
+                       ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>;
+                       tlb-size = <0>;
+                       tlb-sets = <0>;
+                       device_type = "cpu";
+                       d-tlb-size = <128>;
+                       d-tlb-sets = <2>;
+                       reg = <1>;
+                       general-purpose;
+                       64-bit;
+                       d-cache-size = <0x1000>;
+                       ibm,chip-id = <0>;
+                       ibm,mmu-lpid-bits = <12>;
+                       ibm,mmu-pid-bits = <20>;
+               };
        };
 
        soc@c0000000 {
 
                interrupt-controller@4000 {
                        compatible = "openpower,xics-presentation", "ibm,ppc-xicp";
-                       ibm,interrupt-server-ranges = <0x0 0x1>;
-                       reg = <0x4000 0x100>;
+                       ibm,interrupt-server-ranges = <0x0 0x2>;
+                       reg = <0x4000 0x10 0x4010 0x10>;
                };
 
                ICS: interrupt-controller@5000 {
                        interrupts = <0x10 0x1>;
                };
 
-               ethernet@8020000 {
+               gpio: gpio@7000 {
+                       device_type = "gpio";
+                       compatible = "faraday,ftgpio010";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       reg = <0x7000 0x80>;
+                       interrupts = <0x14 1>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               enet0: ethernet@8020000 {
                        compatible = "litex,liteeth";
                        reg = <0x8021000 0x100
                                0x8020800 0x100
                        reg-names = "phy", "core", "reader", "writer", "irq";
                        bus-width = <4>;
                        interrupts = <0x13 1>;
-                       cap-sd-highspeed;
                        clocks = <&sys_clk>;
                };
        };
index 1069134..a6dda55 100644 (file)
@@ -32,8 +32,9 @@
                #interrupt-cells = <0x1>;
                #size-cells = <0x2>;
                device_type = "pci";
-               reg = <0x30 0x0 0x0 0x8000000>, <0x0 0x43000000 0x0 0x10000>;
-               reg-names = "cfg", "apb";
+               reg = <0x30 0x0 0x0 0x8000000>, <0x0 0x43008000 0x0 0x2000>,
+                     <0x0 0x4300a000 0x0 0x2000>;
+               reg-names = "cfg", "bridge", "ctrl";
                bus-range = <0x0 0x7f>;
                interrupt-parent = <&plic>;
                interrupts = <119>;
index 8230f06..36a9860 100644 (file)
@@ -20,8 +20,9 @@
                #interrupt-cells = <0x1>;
                #size-cells = <0x2>;
                device_type = "pci";
-               reg = <0x20 0x0 0x0 0x8000000>, <0x0 0x43000000 0x0 0x10000>;
-               reg-names = "cfg", "apb";
+               reg = <0x20 0x0 0x0 0x8000000>, <0x0 0x43008000 0x0 0x2000>,
+                     <0x0 0x4300a000 0x0 0x2000>;
+               reg-names = "cfg", "bridge", "ctrl";
                bus-range = <0x0 0x7f>;
                interrupt-parent = <&plic>;
                interrupts = <119>;
index 9a56de7..a57dca8 100644 (file)
@@ -20,8 +20,9 @@
                #interrupt-cells = <0x1>;
                #size-cells = <0x2>;
                device_type = "pci";
-               reg = <0x20 0x0 0x0 0x8000000>, <0x0 0x43000000 0x0 0x10000>;
-               reg-names = "cfg", "apb";
+               reg = <0x20 0x0 0x0 0x8000000>, <0x0 0x43008000 0x0 0x2000>,
+                     <0x0 0x4300a000 0x0 0x2000>;
+               reg-names = "cfg", "bridge", "ctrl";
                bus-range = <0x0 0x7f>;
                interrupt-parent = <&plic>;
                interrupts = <119>;
index c18822e..58cd546 100644 (file)
                                           1024 1024 1024 1024>;
                        snps,priority = <0 1 2 3 4 5 6 7>;
                        snps,dma-masters = <2>;
-                       snps,data-width = <4>;
+                       snps,data-width = <2>;
                        status = "disabled";
                };
 
index be596d0..34645a5 100644 (file)
 };
 
 / {
+       pwmfan: pwm-fan {
+               compatible = "pwm-fan";
+               cooling-levels = <103 128 179 230 255>;
+               pwms = <&pwm 0 40000 0>;
+               #cooling-cells = <2>;
+       };
+
        thermal-zones {
                soc-thermal {
                        polling-delay-passive = <1000>;
                                        type = "hot";
                                };
                        };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&soc_active1>;
+                                       cooling-device = <&pwmfan 0 1>;
+                               };
+
+                               map1 {
+                                       trip = <&soc_active2>;
+                                       cooling-device = <&pwmfan 1 2>;
+                               };
+
+                               map2 {
+                                       trip = <&soc_active3>;
+                                       cooling-device = <&pwmfan 2 3>;
+                               };
+
+                               map3 {
+                                       trip = <&soc_hot>;
+                                       cooling-device = <&pwmfan 3 4>;
+                               };
+                       };
                };
 
                board-thermal {
                                        type = "active";
                                };
                        };
+
+                       cooling-maps {
+                               map4 {
+                                       trip = <&board_active>;
+                                       cooling-device = <&pwmfan 3 4>;
+                               };
+                       };
                };
        };
 };
index e62ac51..aa8b7fc 100644 (file)
                        };
                };
 
+               pwm: pwm@703000c000 {
+                       compatible = "sophgo,sg2042-pwm";
+                       reg = <0x70 0x3000c000 0x0 0x20>;
+                       #pwm-cells = <3>;
+                       clocks = <&clkgen GATE_CLK_APB_PWM>;
+                       clock-names = "apb";
+                       resets = <&rstgen RST_PWM>;
+               };
+
                pllclk: clock-controller@70300100c0 {
                        compatible = "sophgo,sg2042-pll";
                        reg = <0x70 0x300100c0 0x0 0x40>;
                        #clock-cells = <1>;
                };
 
+               msi: msi-controller@7030010304 {
+                       compatible = "sophgo,sg2042-msi";
+                       reg = <0x70 0x30010304 0x0 0x4>,
+                             <0x70 0x30010300 0x0 0x4>;
+                       reg-names = "clr", "doorbell";
+                       msi-controller;
+                       #msi-cells = <0>;
+                       msi-ranges = <&intc 64 IRQ_TYPE_LEVEL_HIGH 32>;
+               };
+
                rpgate: clock-controller@7030010368 {
                        compatible = "sophgo,sg2042-rpgate";
                        reg = <0x70 0x30010368 0x0 0x98>;
diff --git a/src/riscv/spacemit/k1-milkv-jupiter.dts b/src/riscv/spacemit/k1-milkv-jupiter.dts
new file mode 100644 (file)
index 0000000..4483192
--- /dev/null
@@ -0,0 +1,27 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+/*
+ * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name>
+ * Copyright (C) 2025 Javier Martinez Canillas <javierm@redhat.com>
+ */
+
+#include "k1.dtsi"
+#include "k1-pinctrl.dtsi"
+
+/ {
+       model = "Milk-V Jupiter (K1)";
+       compatible = "milkv,jupiter", "spacemit,k1";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0";
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_2_cfg>;
+       status = "okay";
+};
index 48fb509..c2f70f5 100644 (file)
                                regulator-always-on;
                                regulator-min-microvolt = <500000>;
                                regulator-max-microvolt = <1540000>;
-                               regulator-name = "vdd-cpu";
+                               regulator-name = "vdd_cpu";
                        };
 
                        emmc_vdd: aldo4 {
 &spi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&spi0_pins>;
-
-       spi_dev0: spi@0 {
-               compatible = "rohm,dh2228fv";
-               reg = <0>;
-               spi-max-frequency = <10000000>;
-       };
 };
 
 &syscrg {
index 30b0715..8d9ce8b 100644 (file)
        compatible = "deepcomputing,fml13v01", "starfive,jh7110";
 };
 
+&pcie1 {
+       perst-gpios = <&sysgpio 21 GPIO_ACTIVE_LOW>;
+       phys = <&pciephy1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie1_pins>;
+       status = "okay";
+};
+
+&sysgpio {
+       pcie1_pins: pcie1-0 {
+               clkreq-pins {
+                       pinmux = <GPIOMUX(29, GPOUT_LOW,
+                                             GPOEN_DISABLE,
+                                             GPI_NONE)>;
+                       bias-pull-down;
+                       drive-strength = <2>;
+                       input-enable;
+                       input-schmitt-disable;
+                       slew-rate = <0>;
+               };
+
+               wake-pins {
+                       pinmux = <GPIOMUX(28, GPOUT_HIGH,
+                                             GPOEN_DISABLE,
+                                             GPI_NONE)>;
+                       bias-pull-up;
+                       drive-strength = <2>;
+                       input-enable;
+                       input-schmitt-disable;
+                       slew-rate = <0>;
+               };
+       };
+};
+
 &usb0 {
        dr_mode = "host";
        status = "okay";
index b764d4d..31e825b 100644 (file)
        pinctrl-0 = <&usb0_pins>;
        status = "okay";
 };
+
+&usb_cdns3 {
+       phys = <&usbphy0>, <&pciephy0>;
+       phy-names = "cdns3,usb2-phy", "cdns3,usb3-phy";
+};
index 0d83393..0ba74ef 100644 (file)
                pciephy0: phy@10210000 {
                        compatible = "starfive,jh7110-pcie-phy";
                        reg = <0x0 0x10210000 0x0 0x10000>;
+                       starfive,sys-syscon = <&sys_syscon 0x18>;
+                       starfive,stg-syscon = <&stg_syscon 0x148 0x1f4>;
                        #phy-cells = <0>;
                };
 
                        snps,force_thresh_dma_mode;
                        snps,axi-config = <&stmmac_axi_setup>;
                        snps,tso;
-                       snps,en-tx-lpi-clockgating;
                        snps,txpbl = <16>;
                        snps,rxpbl = <16>;
                        starfive,syscon = <&aon_syscon 0xc 0x12>;
                        snps,force_thresh_dma_mode;
                        snps,axi-config = <&stmmac_axi_setup>;
                        snps,tso;
-                       snps,en-tx-lpi-clockgating;
                        snps,txpbl = <16>;
                        snps,rxpbl = <16>;
                        starfive,syscon = <&sys_syscon 0x90 0x2>;