]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
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 dc9aab19ff11d5b2c4cb8a514687c38116ce9723..da60e9de1cfbd0151e973c3aafba6d0880fc21aa 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 673277a7a22440abb19ccbf540aa08a07a13dfab..5001f4d5a0dc1726ff520a6b57a8c4dc895e98d5 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 cb8dceaca70efc341a3471b2debb045d702ee797..4787d7c6bac2a1ccb9710aa1d63cfc368604aff6 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 0ec29366e6c218ae9361b71d3b46cdf9a8ab8426..3a34b7a2e8d4ea9f0760fd0441d415f12c2987d7 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 1a173e92bb13777fe08fbf35d2497e82f2ca2157..d3821f651e7286be301b60a2e54365bcba1ffdce 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 73dd73d2d4fa229b0341c8c60b08e1ce749194b2..2e666b2a4dcdaa5d459d671c60afde2ef6671469 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 0db2cbd7891ffb361e0ac60fe6be66e381b2a8f4..1b90870958a22e49355dd1f932bf3d84cd864b5f 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 e20b5c9b16bc94a14d69fd3ab7f81efd684e802a..99961e5282e5617105e9cfbe861d64477a9e709c 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 6905d29f31088a887602e3a2d3e41be5802a5097..51e1386f0e0172b5313fe6825e8c3e123ffd689c 100644 (file)
@@ -18,6 +18,7 @@ properties:
         items:
           - enum:
               - cznic,turris-mox
+              - glinet,gl-mv1000
               - globalscale,espressobin
               - marvell,armada-3720-db
               - methode,edpu
index 538d91be885788f371155b63800f6ba422821fe1..4bc7454a5d3acece1100ee467ba2db80a195ca1b 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 3ce34d68c213acae44c27bdee3a9bb0b9dbcd1fd..108ae5e0185d93976556a03768595961961bcc33 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 a148ff54f2b8a92fa3fcfa78c1bcc525dba1c6dd..295963a3cae799a54560557137dd6b3cf4bd00f9 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 76163abed655a2ade451965b0181c340cf441565..5ed40f21b8eb5d77a9d2f2fe912cee2fa569fd1e 100644 (file)
@@ -55,8 +55,7 @@ properties:
       - const: arm,primecell
 
   reg:
-    minItems: 1
-    maxItems: 2
+    maxItems: 1
 
   clocks:
     maxItems: 1
index 8eec07d9d45428560c565831ac6a9eeb00987feb..07d21a3617f5b2cda50b2665bd4b6732863e0e40 100644 (file)
@@ -41,8 +41,7 @@ properties:
       - const: arm,primecell
 
   reg:
-    minItems: 1
-    maxItems: 2
+    maxItems: 1
 
   qcom,dsb-element-bits:
     description:
index 522a6f0450eaeccaa5a24c79ef4ebd5c9ed15a92..650fb833d96ef67ea1bba33c0767777378a38fa7 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 d083d8ad48b70ef68150f3d1b177890282ca025a..ed97652c84922813e94b1818c07fe8714891c089 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 b6c56d4ce6b9515565fc05348896ba9f400643f0..5fee2f38ff25d283c4a1a6d15cf7d3fa55f365b3 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 046536d02706f85ab79c8f4a550fe6ddedd24c6c..f536cdd2c1a65aedffdfc8475067fdf4aed3f4b8 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 93e04a109a12fa81c4f5bbf6b331dc44d805564c..3603edd7361d3d3984ee8fb0ec30a60da28ac3a8 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 9952e0ef77674c11d115dab50a904841410e148a..c92341888a2880e1be6dee9b29f49c5899356579 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 885d47dd5724ff5d63c1def7c5e7e97d842159f5..e803a1fc3681c2a2a16a8be80d64a68e26d42e0e 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 c643d4a814786a1fc7e559140fe58911990f71bb..4fec558327027faa0a8d2a15699c03713da2deae 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 6588a17a7d9a5d874796ab2f62634e084d3929ef..0272c95270370432065177b9ea17db1d78f857e8 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 860570320545dca98a4b1acedfa56ac57745ec5e..2985c8c717d72888dd49f1f6249a9e2594d8a38d 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 ba7ffc5b16a0f974f17db8fbf5d434d3fba580c6..83c1803ffd161e7a715f9151853596df4fe89e5f 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 be3835e2e04303dad483bf4b9d2e4ef3aab98c07..90cd3feab5fa0053ba532a61520f6ebde5ede9c3 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 488d63959424088ede67835eb4dcf3feef6d0848..99ab9106009f87549d4c4f2dd4ec7bc010e611d3 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 b88b6c9b399a4f8f3c67dd03e6cfc306963b868f..9e79f8fec437b9aecb5103092f6ff2ad1cd42626 100644 (file)
@@ -64,7 +64,6 @@ allOf:
               - qcom,sc8280xp-camcc
               - qcom,sm8450-camcc
               - qcom,sm8550-camcc
-              - qcom,x1e80100-camcc
     then:
       required:
         - required-opps
index 5bbbaa15a26090186e4ee4397ecba2f3c2541672..938a2f1ff3fca899b5708101df7f8aa07e943336 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 9e7944b5f13b1df98ff8c2f409a3120fa43aaaa4..c15cc1752b026231d8d9c3c07bdab201016b6078 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 e937eb7355e7fb74c0aeafb4cb9f5ed80d96e6c3..e0242bed33420a39b8a8cff4229ba9eee994ca30 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 ef07258d16c1dbce85c9b501969a5c0a934849ae..343e2d04c797d82b6f2d922482ceec471744fb8c 100644 (file)
@@ -47,6 +47,8 @@ properties:
       - const: core
       - const: reg
 
+  dma-coherent: true
+
 required:
   - reg
   - interrupts
index 5e6f8b6425454d6440a8653567235380d934cc2c..ed7e16bd11d33c16d0adf02c38419dbaee87ac48 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 3ed56d9d378e38a7ed3f5cd606c4dc20955194f0..3f35122f7873c2f822772e091cf61814bddfb892 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 6ceeed76e88ece6d86ecd6588ead7a65362dfe62..0487bbffd7f7c4bcce3f71df19548d601715fb98 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 350fb8f400f02265b0cc1c89ff7484db5c36c95c..5952e6448ed47e2e1e71fc21cdde2f413da22219 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 bad6f5c81b06d938d637714023bb69e352467acb..9b5f3f3eab198914f36c4243c4d22d1fe69bb8b7 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 0f1e556dc8ef3d4668ada0f925e4f1f0f6662c08..b659d79393a818a4323e97530bb63cb616c92de2 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 846de6c17d9313d595577b808fd1d6545c79efe9..a5b88eb97e3b01f5539d17f75944fdd43220e7af 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 ffbd1dc9470e2091b477b0c88392d81802119f48..2aab33cd0017cd4a0c915b7297bb3952e62561fa 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 6b57ce41c95f2221d7bbf2eb76ab05975c6fced0..d0ce85a08b6dc25be6ee80f3132fa66455fe9321 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 ab884e2364293ed4e79ddfec35b3c5f4d14ae853..4392aa7a4ffe2492d69a21e067be1f42e00016d8 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 a90a8b3f1a9e59236926edcc9992032624362efc..5fac3e26670328f65a147d6a463472f575f7f5fd 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 1ea50a2c7c8e9f420125ad30a80b4ebd05c9367a..59192c59ddb9c126ada43ada1430fa7569651f99 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 24cece1e888bd35f169dc3764966685de4b6da1d..a1c53e1910330af473a1e6c7827026e0770131ee 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 c649fb0858336937c81ac7c37d6a5996600705f8..e4c1aa5deab925efd591f1c92de4cc29af9cc152 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 3623ffa6518dccab52eb4c91ddfa8eadeba3a293..96621b89ae9e6a79c0a6484cd6ebdde38dc6cdac 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 e80fc7006984e052b4f7c0007679ee0e228d9989..548f5ac14500a7f8c3e0e5df7db9e19f5af40eb8 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 e3ee3a332bb7e1736a8d44773b0aef4873153be1..b0de4fd6f3d4129d10e07b46533bb551784d8d53 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 3880b4c2ea9ad44ed1e154340522074a3c7c1259..c27dfea7fc6227f5130eed4a36265318c93a0987 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 d8e761865f27e284d168d08c7599e4cd31a4c015..96b4b088eebee7665cbe30899fc4d65da499acd7 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 2531726af306bd388c00c3c0a1785b2c7367e2bd..f546d481b7e5f496e1684f95edaa2fb97b840503 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 f448624dd779cf38efbb6cea3d162abc34df654e..193ddb105283f15e84d73a4c0127c387cefa92f4 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 9ca1c5d1f00f85fa9a7be85e06f2eb6221927116..73fc13b902b38c23793e35432e0fc733b9f3a33e 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 4f925469533e7ea7d8feaee2cf37bdcf07a043de..950e8fa4f4ab446e59a9f2934716f79ddda9c91d 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 a17cf2360dd4ac5561be811ebaddb7b184e709cd..75a7d9556699cd0b664a9195dddd6be5a5451442 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 525f5f3932f548b64a7f75a95afef6f24b2c2a7b..935735a59afd4752b21a84edc6e380a8a71f018b 100644 (file)
@@ -59,6 +59,8 @@ properties:
     minimum: 1
     maximum: 8
 
+  dma-noncoherent: true
+
   resets:
     minItems: 1
     maxItems: 2
index ac3198953b8e5966fcd09c44ac4455695c5fb48f..b5399c65a7315b1cb500556118f1c3eade09fb23 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 ab93ffd3d2e5b657164f144a8f792679d4ab102b..b8693e4b4b0d34e688ce76baa45369c067ede9e2 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 4772ded8a9872754b9c003925c8d938eba704e2e..202acac0507ab113c0d56c0be1421d3f5c3305e0 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 c9e4afbdc44809c21fe4c073f1a2494e899dfe0f..0ac68646c077790c67c424d0f9157d6ec9b9e331 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 557e524786c2224e1af8478c2f3ba84f9d0eb342..f9ba18f06369215691c69cdc1538b53dfd369f37 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 8cd14a70bedf99bfdf5895dff4cbfddb4b43a740..b106f5212ea9dd49b20eeb97e9185773fab057f3 100644 (file)
@@ -16,6 +16,7 @@ description:
 properties:
   compatible:
     enum:
+      - ibm,fsi2pib
       - ibm,p9-scom
       - ibm,i2cr-scom
 
index b9afd07a9d246054bffd33979dde4919522fa45d..b16273e69dfe791da7b3c300759bf9f5f743886a 100644 (file)
@@ -46,6 +46,12 @@ properties:
     minimum: 12
     maximum: 232
 
+patternProperties:
+  "-hog(-[0-9]+)?$":
+    type: object
+    required:
+      - gpio-hog
+
 required:
   - compatible
   - reg
index 33d4e4716516d53e0e9049dd9f781f8c368ed80f..7ed5f9c4dde9a765978e957b6363209705bdfa88 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 cabda2eab4a230b632b7adeab44477564d510ac5..4fb32e9aec0a341a50088f3e4352ed4d36f649d3 100644 (file)
@@ -28,6 +28,7 @@ properties:
       - items:
           - enum:
               - fsl,imx93-gpio
+              - fsl,imx94-gpio
               - fsl,imx95-gpio
           - const: fsl,imx8ulp-gpio
 
index cf3b1b270aa89b6afe80ac43c613ae9c824ca51d..b68159600e2bd89aa931e64b493cf6a6b6f772da 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 3718103e966a13e1d77f73335ff73c18a3199469..8bca574bb66d491d984cb1b1665743048bcf4566 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 bb93baa888794b83d1613cecca79a383b528914a..e13e9d6dd148aec883bb4d3a30289db8393bd69b 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 735c7f06c24e632ab738d062f15378f754c8adaf..019bd28a29f19bb4f7a9c32434b208b6d04db221 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 0801da33a385b42fa3a7ff367fafee54b1aae458..48daba21a890d24c02383672518bbd5cd7885d16 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 385aac7161a0db9334a92d78a57a125f23ca1920..383020450d780cab1f3a137dbb8286ef8ba21b31 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 ce7f8ce9da0a8d45cef5449975fc13c2cb16ab2d..236d8b52ef8520b5b8a2269675b1a08dd359c5eb 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 fd79bf2e0d1683be08c12a5e08950564e0d17573..ddb72857c846416d6630720d8726cb4d17a0ce1f 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 011e5b65c79c4326384e1fa527ea170ab10554e1..1ff44cb22ef42bdcb22d3972e1c9be7a40cf1801 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 7f30cfc87350676a8fbf2d35914b87b9404f053b..4faebbb4c7abd22bbd5658e7586c09ba8e9a2fb1 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 37e1dc9c7dd3798ed4b2a90b46f17c99f88b0d52..aa801ef1640b177ee55181c724b024b4857e0252 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 93e86e3b4602af73badd0904a25de4e9ab3fa5c2..8af0d7458e6224c1482a3d2552d0386124b1ece7 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 4f5837a30773d371f44803aab2b79ae7fe4234e7..139a95e00fe583fd28e7591af80e69566104192d 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 2c26104a5e1690432633b978a5088d641b47f657..24c7697fdc1a87275e0fa756423a768bca11693b 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 6e59c8fdef308d078c7a21f3a19250398b9c584d..4feb76919404ecf022729cf1a5c641e5798c5ade 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 3d0146e20d3e10747c3049911b9419e9ccdab83d..b8e500e6cd9f861fbbabd79a14d882341dbb387c 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 e3db642878d4036c01fa1baf8d96eb34459a0849..2444702828909a76e9d083e329925e5c8f21b51c 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 c1e5dedc2f6aad3ea2e170f2d8ccc725110703f3..625fcf5d3b54f4728f745e92140af03895e5e982 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 cd8dcd7970311b2a308b57f40e9527eecdeea23f..c16a33227e94f11164959536a41216d87df4e67b 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 e8feee38c76c8e3cadf054e9dcb7610c2e2ec062..f8bea1c0e94ad1920660c7bd5fac023ccae86ffc 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 a32035409cee7e445dcefba8fdf2cdfd3a79e5a1..78e3d97e2ae573f30c45734ca4b8d8a5e797a9d4 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 926be9a29044b2095c47bee4a91df44f31c2b47d..fb80456120e14f12dae0fd81d41c17656690a983 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 05a9cb36cd828777b42d6656bf8d737e817f2e16..bc03781342c0eb6dc836ce1d6955e2988ba9ec5c 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 f553235a73216a4ed50a9484ef5b965d61694bfb..63d8cf46780628c02f33f2a366de4161c7817556 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 227858e7605876ef4a4ee4dc08f3fb95f2792756..cba5b4a1b81f46aa6c4ba04a3ea890d38bd51b5a 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 f58248c29e22ccadf3292af44b4ad65cea9af41e..ee7de53e19184d4c3df7564624532306d885f6e4 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 31ce77a4b087efe3934ccb7187e029a69a19b094..6971ecb314ebc9d8489c5dddd987c36fae033bdc 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 70cc2ee9ee27dd128be10152a0a0c873802f08a2..8d47b290b4ed1c95b7237ce7881b40872cc7ada9 100644 (file)
@@ -30,6 +30,7 @@ properties:
       - items:
           - enum:
               - samsung,exynos5433-hsi2c
+              - samsung,exynos7870-hsi2c
               - tesla,fsd-hsi2c
           - const: samsung,exynos7-hsi2c
       - items:
index 1dcb9c78de3b57b3dc2458413c11d45e20f12065..969030a6f82abe0271649e6807ef05f02833bb02 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 a9dae5b52f28656944b0c7e528fb7d62091ec804..8101afa6f1469a8e35cea87a5040c7981c9f2b4e 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 f43947514d4818e7f3b3fcbf0443266ce42dd50b..758d8f6321e10b7dd7b195c1b8cabff8594b3177 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 bbc56848562721d206fe4d72c7c103487d11f7bd..6ba7d793504c8cc3322c65ef4aae5ee720e8baba 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 e5d05263c45a570be97ee5f56a3076fc7d734a85..bc5d0fb5abfec3ef7aa67df4b5f00614068246f5 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 8c2e35fabf5b40c6a28ba28c302229848a16eb38..58d32ceeacfc80b29823fadceea873ea8b5158ac 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 c56ff77677f1706fa9bddff4bb7be6a2e5637d54..4fbdcdac0aee528d6c9bd2d60e8f2b6704f153af 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 4fc13e3c0f75e7e9a63aff26c35b6593af59491a..5f646737581108fd85bae474f270fc56acaadf6c 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 7d2229dee4441e20a7bafc9165fe309ac2e9eada..cbde7a0505d2b5df22c54ca4556878bf22e9b4b1 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 ada08005b3cd1ce7ba13f96484a33fdee0e83a1c..ff4f5c21c5482b77ee2774b01ad6d426e68cf207 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 e1f450b80db27896c0c2f939e247396caf0a0e9c..cf74f84d6103f26604727107802d14a04fb3054e 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 dfc3f512918f656ee28e0639e99f83d6b6f65591..c2e5ff418920c64fa7d8738bafc879532fc6364d 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 fd93ed3991e059e43952810af42c59330b739e4a..41e0c56ef8e3168e9e17b55b72b8b740203bc92f 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 8cbad7e792b609a1cecb3d2d1c0ac4353e426037..a403392fb2639ca4e8509592d965cece0a0d0da7 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 9eb9928500e27b2d5f0ad22e1d17f2b0f27e4188..3e323f1a545843a61c930679e23c6794cf62063c 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 1cb2adaf66f9b621b3814b68c8afc991d5755a4c..53d6074416123c71aa5c188527be281565f1a701 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 ed0ea938f7f8554572df7a28a1870baaf1b3ebff..1e25cf781cf189643d6ac5166d196c3129f928aa 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 a3a979553e32a03f7e834a41610b1a801a90aa1c..f1048c30e73ed0d5960758ce38149b4086baf80a 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 7cc365e0ebc826d943639df7f55f6f9e6fedf03c..7c0c6ab6fc69d8fcafc1705119807ed788063554 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 58aa1542776b51cf08db928c7ffa6e73b18358c0..fbba5e934861cc9395466877adbc0119b7c2d905 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 517a4ac1bea3df584e430613af5e87fe6c2dc1b5..e365413732e7b9a12af0698ca6a1ab4bd63801b1 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 88764adcd6963e003baed9295c12b59ddc08cb30..e03611eef93d49accb2b84cc4dd04499a135dbe9 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 12c74c083258aa8dcca668a8d670d70c3bfa9c19..64590894857a74e48bd5a4ca17c0517a2fe954eb 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 d90f045ac06c89b6053e56b3d50829056698c3fb..c40d92b7f4af5243786496e98fbdbf13505cac45 100644 (file)
@@ -19,6 +19,7 @@ allOf:
 properties:
   compatible:
     enum:
+      - goodix,gt9897
       - goodix,gt9916
 
   reg:
index 604921733d2c7132087b99c950dbb1645fcdbfc8..8f6335d7da1c53e2b20c565cebc81044fdf7a792 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 f49b43f45f3d9313bc163422e0bcc74ef1703ab0..06e3621a8c06ce9f1504b338b047d01c3139637a 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 a93744763787d0b901e530d7e13eea8682ae8c2b..3d60d9e9e20813072f50f776c90416fa5642ba10 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 6076ddf56bb5af487c0c278dae2ca684f4eb1d8b..c49688be1058199e7a5f5909ad99b066ce149e52 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 d7ef4f1323a7a38789ac07c387428d357d9d780c..3f99c8645767cd8de55a85075e9713c9ac4f3535 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 190a6499c932ea36d733e84a5e53909a4e1c9457..bef00521d5dacc002d24c50843ebe6380a7d5524 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 032fdc27127bffd689ffc23630c9978c4460b336..7b9d5507d6ccd6b845a57eeae59fe80ba75cc652 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 5ae9a628261fd251c1e991a70662c6d37ef2c4e3..3e5623edd207abbfbd2ba80f51db7829f02eb7b5 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 8b82c45d1a48be6ff63193aae9d67625a943a72b..841a0229c472a4764426d25d9dbb900adc20fc11 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 00631afcd51d821cb7bf70192806f5c5775a38ab..581425aacdccfc7d17ff00fd977f04cda9d44920 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 cef9d76013985a78fbff2f46aff457208c23ac40..73d6db34d64a5b9f2ef40b902609a445346d3b40 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 78f68dacd028d79f9a2ce41c2732d0e6ed2142b6..a58a018f3f7b9f8edd70d7c1bd137844ff2549df 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 4371a0ef276174e2f1f1055fbcfbbeee901b7ee2..9ee1483775f60905d300fe909f10052a00183fbe 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 b68141264c0e9fe0e530ce3b06fa3434fa712b38..4d40e75b4e1efff673647dff7bf984c89abca4cf 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 110e8f5f1f9e9b682417f05c643b89a89c0c3cf8..ebc615584f921645b806206bbaeb489656f73b36 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 5865e6f0be89098c34078c49163b8e45fe98da2b..bf8082d87ac035771a71b5ec4ee10bf07b4f9bbc 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 cfabf360f2781abafa403bc88ce3d5f1c5f4e9b4..a4aacd3eb189bb5ed307ee20f6654dd2a77c5485 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 83c020a673d6e6fba706133c76d09ae1c78945ea..5b15f8977f67f70f71bd74c48a4d42e950b1ba4e 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 e11141b812a09ce56053aa630aad8560f86ccfc8..ee35e3bc97ffd3476651db44252c946252466cf1 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 33bedfe419244e12dbb98b358821bbc39ea6facf..e9fa3cfea5d213b2d619175197079fbfa4300548 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 a5598ade399f2361cff78a5c5467770a2c0c5ed0..1578514ec58ddfd89b03ddc1286aa8d9e8f4227a 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 00deeb09f87d5c2b5700d93a663b278e3e1d03e0..73a6dac946b768c2fc8446335fceb4ee3734de37 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 1b1fb3538e6eedadb61b4827c7698e2f49e31b11..423d7a75134f87132eb964c3cedc4dc5c8723325 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 5dfe77aca167b39d6c9ad17487096a18af0a597c..d88854e60b7f95bbd0973344135ecab455a169ee 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 0dc6a40b63f4769ac5467f27dbc1a0c491a51d09..c7d6cf96796cd062ca6598f429ddb8d70ba5f5f7 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 190230216de84aa106204ed1d69dc9f129f153a8..f00827c9b67ffc303fd027058aacc30be161a544 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 a503b67f2dbe78516a693ca55a8906f93c8f01dc..7e7225aadae3285f59ec303294cf1515772a629b 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 a4be642de33ce6b987fe011adfe4f6b938c20c19..ac5d0c149796b6a4034b5d4245bfa8be0433cfab 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 b0e438ff49509ea0a62242c859f9a9bb31060e19..66aa1550a4e5148b66cd3f7fdf39104d528ceae5 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 4d67ff26d445050cab2ca2fd8b49f734a93b8766..c6bbb19c3e3e2245b4a823df06e7f361da311000 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 0ccd632d5620015b9a6fbd1843e4c5533c36fefe..9f3b1edacaa028777188d3d434ef65ca369a5194 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 022682a977c6d347c36279f958dcd6f53d385b71..0d4d9ca6a8d9a099841f52e0d792e99197d8ea2a 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 b9b999570529014129886e447b8b308e4a5c04a2..b98a84f9327721685a69de4b4d0d1e575d937c4c 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 9d7a1298c455434a0848dac32cbe77eb8f71c065..26e4f0f8dc1cebb8569668121b747ebcf14c4f5b 100644 (file)
@@ -24,7 +24,7 @@ properties:
   $nodename:
     pattern: "^mmc(@.*)?$"
 
-unevaluatedProperties: true
+additionalProperties: true
 
 examples:
   - |
index 1f066782806341a9f72460edd8e6454ce22f4320..ca3d0114bfc6df4b442dae832742f5d79ddde767 100644 (file)
@@ -29,7 +29,6 @@ properties:
     maxItems: 1
 
 required:
-  - compatible
   - reg
 
 unevaluatedProperties: false
index af378b9ff3f426163a3f396e1a8bfe23b2052cec..773baa6c2656ce663de25c5919d53d5f8c114416 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 06df1269f2476e47149278393049ed6936761bf2..bf273115235be1d9a6ca561f0b6dfca5c0ad0c49 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 ef2d1d7c92fc8ad7456379bde498badf7b3201c8..e8bd49d46794ee19e994860564a1612bc9d6e642 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 c3d5e0230af1a68a305ffe5d3d3d4d00e991c289..e6e604072d3c6de9370697739f1b7d4e15d6ed21 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 15b63bbb82a21a0d07815c9191e77c9bb41b53c8..b90d3b48c2f28580dbe9c4a19897af78c5f48712 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 f9eb1868ca1f4e56c20e6f023e9ed9e52371c9c5..0badb2e978c74d9517984a7a93016a1f4fafe4cd 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 18f6733408b493bb53351d6e0560ab0a0a435cad..1b375dee83b0c58a1fbce5dcc2fec8c85c5a60c8 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 cf4198e43d7fc518f3f9534621dfe1be7029d7b5..bd8f7b6839535fe900ebf8477c79bd28c15726e3 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 c578637c5826db4bf470a4d01ac6f3133976ae1a..0fdd1126541774acacc783d98e4c089b2d2b85e2 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 798a4c19f18cf9c005293095ecfb0729e2b85d91..0cd78d71768c1e22e4ceb06cc147e600e010269c 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 0a2d7baf5db32c46f0dda6bb853d377b55ae4626..d02e9dd847eff9f1c1d0a4cfc14b8909b60c460a 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 a72152f7e29b490003114dae1e36df85cba384df..6353a336f382e4dd689d1f50a624079aa83b2ffa 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 97dd1a7c5ed26bb7f1b2f78c326d91e2c299938a..f81d56f7c12a587dc848079ab075db737b4b74c6 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 e0ec53bc10c6f9608892cfadc0bade5cdb8f2672..1525a50ded476fc5e5affe60bba27282898d97fd 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 2a98b26630cb1c0a88c0740d813d54ad881b3629..c155c9c6db39223b135f6bef86187352cd226af0 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 3c30dd23cd4efa17e14b17bfb41c54de4ebadcaa..8d69846b2e099fcaeaf6b366239035504809d0b3 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 4c78c546343f5e784a0c3d1c0999b4cf2fbe4bac..d6c957a33b482dedb442e11e28aca3b95f608b24 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 45819b2358002bc75e876eddb4b2ca18017c04bd..a2d4c626f659a57fc7dcd39301f322c28afed69d 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 2c71454ae8e362e7032e44712949e12da6826070..824bbe4333b7ed95cc39737d3c334a20aa890f01 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 9bcbacb6640db30c94b30c9910f15a7969438939..55d6a8379025bf6b9edd1535a1e644ccf0e6dc8d 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 9c9668c1b6a24edff7b7cf625b9f14c3cbc2e0c8..b18bb4c997ea3a221e599f694d9a28692cbcaa7c 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 a1046e636fa14b494963f6770ffa578359dcd224..f1bd07a0097dbb2d5b30cbd6addfab3be7d1644b 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 42a0bc94312c3cb25acf36fe397403d055b61483..62c1da36a2b5a29290e5e01be87c48158c4adf89 100644 (file)
@@ -41,6 +41,12 @@ properties:
       - const: ptp_ref
       - const: tx_clk
 
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    const: macirq
+
 required:
   - compatible
   - clocks
index ed9d845f600804964e0000dd4354898673fafe08..3aab21b8e8de5bb71e2e4ef307120deeb7b24a6f 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 87bc4416eadf212289c1724813383073b825a226..e5db346beca9649be4f97727b78fda8973095912 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 1a46d80a66e8b55c2c086b0bcf2315281b7d8a3c..b4a79912d4739bec33933cdd7bb5e720eb41c814 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 f053303ab1e6b49ec1a9af0a6a58fc84bee89e18..80eabc170669876b2230618c537710c99a7cabc2 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 9630c8466fac06b68fdc1d0b25c20d1434185b88..4a706a41ab38c82f4f08db4e43d15a381272a3a6 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 f8a576611d6c10ea040392cbfd8af016b71ede2f..0ac7c4b47d6bff1bfe2c691e5ebc0cff000a0795 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 f86667cbcca8993cb9e0c3abda2ab291e3c06ac3..42279ae8c2b9108776499703da75e2fdacb79c96 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 91e75eb3f329bcd09cdcb7a197abe960c6a4403b..78b3030dc56d279ea3618200dc8af11d7fbf429c 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 85cea9966a27e9a401a8724e32e577a3f48f1076..987254900d0da7aab81237f20b1540ad8a17bd21 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 052f636158b3f16087c83b90ad7132d6712c4c42..f0f32e18fc8550e6f63b87b60a095972453836c9 100644 (file)
@@ -42,6 +42,12 @@ properties:
       - const: stmmaceth
       - const: phy_ref_clk
 
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    const: macirq
+
 required:
   - compatible
   - reg
index aace072e2d52a6830b98dd3f52d61380105c8aa1..f2440d39b7ebcda77db592de85573bec902fb334 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 a4425cf196aba58e4181e690a0448236aee15e50..653b319fee880ef0944d8e35c545890b60611756 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 a69ffb7b3cb884a4eeb51064cc1c8136b433f285..c089677702cf17f3016b054d21494d2a7706ce5d 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 318f305405e3b34e66a31bec7460c0a9d020ebc1..589960144fe1d56eb6f15f63a2d594210e045d27 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 8b3826243dddfcf9c9bea531541c55d3fc04a3bf..38e3ad50ff4fb6200023f22b4c70c506349142df 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 39c209249c9c0bdf1eb5693306daf3de6e19dff5..3f6dc6a3a9f1adc582a28cf71414b0e9d08629ed 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 a44d44b328091db6e3aafc8ed4689d2fec53b2a3..dc89020b095067351c3e6e2152908ecb2a6aeb18 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 52533fccc134a875f4d82f8866a457d3d6904ccd..5d3f48a001b71ca39e7b562deab21865866ed24a 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 2ad1652c25848b472900bae0607ca115549b6c6a..29f0e1eb50961efdfe64bada7f32fd0e372e1135 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 4c76cd3f98a9c77d99d0f0a67dfa2bb2b9cfad52..ca5f2970f217c34b7f6de7e9162a25cd1424e396 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 399efa7364c93a877b7165a26e30cfc75bdb7c47..d78a6d1f719871d1aad5ec4979dc77533102ce19 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 f05aab2b1addcac91d4685d7d94f421814822b92..162406e0691a81044406aa8f9e60605d0d917811 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 1226ee5d08d1ae909b07b0d78014618c4c74e9a8..ac3414203d383bbd1a520dc11f317a5da9ca33e4 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 7235d6554cfbc37e6fee342593f75a958cbd495c..8f628939209e9ca63ba229c089520cd5538bbe6b 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 205326fb2d75c6782d96e20162c475209db9997d..1117a86fb6f75e67221b2fdfc88e3ac3fdedbaf7 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 b63a759ec2d7a79681f0f05973164a3d0a0e43ca..d674a24c8ccc614bd552f8cfbd3f9586f2d023db 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 21209126ed008e307de80adba83ef10e8f00c3f0..580c3296a18d74bf433243f68864d61183128b57 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 1b3de6678c087ab23f0798438f2e1385bc385ca5..888e6b2aac5a18dbef9c3ab4e6d64e889b4edcd9 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 89391649e0b5cb7e778b51fe61fb445d1f17eaf5..2c6c9296e4c0d3219dd446d90e954c97cff32284 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 72bed2933b034ff61a29fafebfa176383086e440..a58370a6a5d389cd0118e7b4650c6ff960bf86fa 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 84fe59dbcf487c8471f2d27597a624000dac6256..7a307f45cdecfe7b74252232c5e2c37c21312c82 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 f402e31bf58d82e4e310be250f1c7c111845e207..d70ffeb6e824bfc19668e0f678276acd879a6217 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 16321cdd4919cd00228c35e3c1676e7954077591..27295acbba7674f6cdc402f18ff4c505bd8760f6 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 b2601d698dcd41c3ef32af547ea41be0d6904ae6..21fd4f1ba78b05e5347b4ffe578656c8a4dc5636 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 774c3c269c403e08d1bd0a086b0c7a6bec395bc8..81a05a09f19fbc97c553a40ef113b85d317600b8 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 890961826c6f0716b1544912636a60dd06a4cae1..84e960255a36d4c0736fc6136c76cf9d08d93aac 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 749dbc563ac50aa31ee17ea1c32ca8f1fda6d54b..7a156b9bfaf32909125efc89e27f8dc671909964 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 80a2b1934849dd83e4f0a52b1c606edbc864241c..960758dc417f7405010fab067bfbf6f5c4704179 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 68ed714eb0a178c46228bac142d69bbd6baa6277..0da6d69f599171b6946992c036f23c5dea17bd0d 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 5296a9e4faaec691994cd567bc3805f870aaebf8..de846085614166087ef9046cf5d154fb9dad8309 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 46e2647a5d727c3ba504a3a6f4c043ab88f7f0ab..f578be6a3bc8ad201b637a0b4ac347bdab11a724 100644 (file)
@@ -17,6 +17,7 @@ properties:
   compatible:
     enum:
       - allwinner,sun20i-d1-ppu
+      - allwinner,sun8i-v853-ppu
 
   reg:
     maxItems: 1
index 59a6af735a2167b7edd9e0491da238f21effe316..6e9a670eaf56c8a03d28a83fb0b7f7f8d6aaf1f1 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 202a5d51ee88c7190805efe8f1bf493bdb69ec45..3fa77fe14c8779863d18951700b9c0e05c463cff 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 0735ceb7c1031a874c3b3a140555c590bd617b5e..9c34249b2d6d9d98ef73d2de6a224a0dcc77f521 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 799831636194f50ffdb139bd146d8905802bd474..079ad977b90780efdff9b1925cb602f46834f131 100644 (file)
@@ -46,7 +46,6 @@ properties:
 
 required:
   - compatible
-  - interrupts
 
 additionalProperties: false
 
index 650dc0aae6f518578f57e8ec4335bc8251b736a7..ebab98987e492d64fff9977848fd8942ed96c4b9 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 5ccd375eb2941b224b86b19f7087111aac1dee33..3504c76a01d8df2daaf12d91bd86379807a718bd 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 27f1797be96375c4aa6969b0c3d09679fed8388d..66bb016305f94b5cf14f11da4ec5ee86b10e5538 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 fd4adfa8d2d4bfe96ac4dc37fd6be316789bc764..383a838744eb337ccbef84b67d3de0d056917870 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 ac0a35bf8648cfd8664a07889a3c53fab25cce1e..d5a9340ff92090af7b886efad927fcbd21c228c1 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 65bfb492b3a4dc69cb0543d4d0d00874c1f40889..c8cdfb7233362809aab2eddcd73452d1b619a4e9 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 a4dfa09344dd72a21bf6ce04e0415c6e0de2953d..f85ee5d20ccbb3f9b28ab1331edb05426e1b0d79 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 68709a7dc43f110838d69c766418d7c7380fb0ef..4ffe5c3faea0758682c2767abc2679b8cf68633b 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 87accc6f13b8fc75c0caad1f1990e144ef91b9d4..022c1f1973646607c43d724b853b89ad507a9e28 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 78e64521d4017364db9e9c4d4d56a767c1f2d1e4..7c64e588a8b54d90ee10c4c155f9db62b5a72c32 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 588b010b2a9e53946a615219fc1468bc700deef8..c179b560572b2c1aa85521e4bd01d1857530f6c4 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 059cb87b4d6c23c47522baadbbd17008f1b9c30d..eeb6a8aafeb92a374aab11281ab4dae035f58e7d 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 d67386c50fa4d6e4f9b844b36e17ffa1db613adb..56ff6386534ddfa76cd42d84569ddfcf847e9178 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 a24cbb61bda7d77015f720e01526e1727fc9676f..2dd479cf48217a0799ab4e4318026d8b93c3c995 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 8e033b22d28cfa8203234f744b3b408e976e20c3..117fb4d0c4ad2a3fad3cfe5d49ec2223b59358b2 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 98465d26949eea723c067b8dac91f8cef908a9ee..c3b33bbc731964ec5b7e4d4f5296258a45c27720 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 1f1b42dde94d5086020f0a89d183eafa1ea17589..1db85fc9966f13dcd525355101c37a66ec155a76 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 a63b994e076367e068b9eed43b3598b8a227b84e..bcab59e0cc2e1d90e1bbc939422fbe1d8f3643e8 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 52e55077af1aeb2a4d41ccac6550e9c5b4eeab8c..077b94f10dca9ab36c38da7f8426c0cd48fbe5ae 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 0125cf6727cc3d9eb3e0253299904ee363ec40ca..bce7558d0d8789127dcf6050a78a166c753887ba 100644 (file)
@@ -18,7 +18,9 @@ allOf:
 
 properties:
   compatible:
-    const: adi,max31335
+    enum:
+      - adi,max31331
+      - adi,max31335
 
   reg:
     maxItems: 1
index 2d9fe5a75b06715d970a72ee66c3f2a4915500f5..11fcf0ca1ae073d4582be5cc134fb5bd130cfecc 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 d274bb7a534b55ef83a05da2c2b8446f38342c88..68ef3208c8869c08a5f26306bc9cab6fa111c242 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 0bde2379e864749a20a2e1c962103bf8f5299e42..dc0d52920575ff851a24e56b808e50ee3a14743b 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 3f9ace89dee902011d593c19a6d6f46424b1c832..c42261b5a80a8ee2d462d9786bfbf6b9d684b3db 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 9571041030b78d497638b95d0774f33e23a9df15..3fcf2d04237273aacde39a6d91f391d01de7f1d1 100644 (file)
@@ -92,6 +92,9 @@ properties:
       3000ms.
     default: 3000
 
+  power-domains:
+    maxItems: 1
+
   resets:
     maxItems: 1
 
index 070eba9f19d3e039090c58a82f93d02eed58ab84..83d9986d8e98a2a55615d15383c9c7fc89f5b52f 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 1c163cb5dff10576be417a0372d2f315d6284297..1aa3480d8d818e998681af7524a1c93576164796 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 a2a5056eba048ebe9b9eaf2366a7c5fe9150a1c9..5bf2656afcfd8b2db1d207e6098e33478757b2e5 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 31295be910130c2b85fb76cf09a0cf7e45a428d0..234089b5954ddb97df5801959420b6e0363daec1 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 80d99861fec55396bfa9831dca26a4fb6ebc02a7..70a4af650110b08066a923995c4bce2da79783cb 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 7b031ef09669f74eb33a41fd7db88da7260384ae..54cd585f19e39f7688a1f7da3e40e78fd708c2bf 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 2d3fe0b54243e8d912d2aea637dadd49a02f230a..4c9e78f29523e3d77aacb4299f64ab96f9b1a831 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 ebbf0c9109cef2396848fc6542e2d2228b56daa1..e0f7503a9f35b0d4cf1149d62e26eac36a7e2ff2 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 225c0f07ae94c8a7c03e4d670b67ed127936b81a..51a4c48eea6d70fa06e5012a01aa1aea0e24edb2 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 61f38b68a4a35abff1b093a5b96e88f9fcd7e49a..2f61c1b95fea3deea87d8d848a3f0eccfd14238f 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 8e6d051d8c97de0c843a91350a5cb9c332b2d6ce..204da6fe458d2d4bfeee1471ebc5c38247477ae2 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 5b046932fbc3f4ad651506b11f0e79dee01636d5..cb22637091e8bbfed9756ca7983e9dccaa2a0a75 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 a75aef2406293b5d16197dcefeb08b681e8d767b..d27ed6c9d61ea9db77229eca60b6b9a0abc5d305 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 131aba5ed9f48f30637b81188467e7f72755a93b..fb5c39c79d28b650fd848fc02bf6fbf9f80c22ab 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 ccae64ce30719a9dc7c72e68023807ca0a126068..b4eca702febc74e22af16065e0955f43cccfe57c 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 f943f90d8b150af11c47caf3512c2ab61cd0fc89..94588353f852a72b59eb1f869b1dfb2f2b92366f 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 6676406bf2dea7e82fab532487bff426c7fd0731..bb92d6ca314450e35509944ff2fcaf6a0bd8155c 100644 (file)
@@ -19,6 +19,7 @@ properties:
     enum:
       - awinic,aw88081
       - awinic,aw88083
+      - awinic,aw88166
       - awinic,aw88261
       - awinic,aw88395
       - awinic,aw88399
index 59ef0cf6b6e5e1bf627e6df7337ac3c7b067c43b..cc3c84dd4c26fd30c24225657fdb0275089dbe67 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 ed18e40dcaacf7eed39fa659795efb1518678379..ddddd7b143ab37c3d8f8ee55f17bafd0fd63b96f 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 9413b901cf7782311fec68fc912f5bf5914116c1..3ad197b3c82c694eb4c325c3ae91722d551bce1c 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 c454110f42816b347dae41addaee5851d063ab3f..8f1108e7e14e2798e86a6e7167366d90a3abbcc4 100644 (file)
@@ -80,7 +80,10 @@ required:
   - fsl,asrc-rate
   - fsl,asrc-format
 
-additionalProperties: false
+allOf:
+  - $ref: dai-common.yaml#
+
+unevaluatedProperties: false
 
 examples:
   - |
index 76aa1f2484883d6b3331f2ea3b8c738db4f837c4..85799f83e65f100b5e407bab7a56223fbd4c4f3e 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 a5d9c246cc476ceebf956d1a4ce2ee19fefd62ac..0d733e5b08a4ef6ca5752b87df63697c7dd32cb5 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 f7ad5ea2491e0f06698181e143a107746f15b323..3c75c8c789870624b9978c93ff9768476e1dfcaa 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 362e729b51b43ec16716aee70ad736420def81f3..76d5a437dc8f4ad1f31c21f84304bad326b0facd 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 12c31b4b99e1808d3d1f8935d1a66db2abb7271c..3ca9affb79a20a38d6e93bfbf08dd2b53583aa78 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 d3cf8f59cb232617c9d3acbc7caa4dc31c4bb92f..c8543f969ebb3d6b8759cc309365182df2a07b37 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 c3c989ef2a2c81eba73fae3d1ee4bfd18a8e5d29..32dea7392e8d49fc6402a64fc9f7115a47a8b8ad 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 5e7aea43acedc0f7d8c22e36debfe805c7ebe74f..8eab98a0f7a25a9c87d2c56fd0635ff8ecee17d0 100644 (file)
@@ -23,6 +23,7 @@ properties:
   compatible:
     enum:
       - ti,tas2770
+      - ti,tas5770l # Apple variant
 
   reg:
     maxItems: 1
index 5447482179c14ee78885e5bee02f4549428694a6..fcaae848e78a1137e4d44f98258207bba68772b9 100644 (file)
@@ -24,6 +24,7 @@ properties:
     enum:
       - ti,tas2764
       - ti,tas2780
+      - ti,sn012776 # Apple variant of TAS2764
 
   reg:
     maxItems: 1
index 329260cf0fa086a61e34a383f8629eb591da52ea..3029a868e5e19178aadcaa9b0a5be349b94309cc 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 62e62c335d07d19a4471827adb8bd20230123dbe..3c2b9790ffcf597fd9c21d9e574993deb3e38a3d 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 d48faa42d025b07d72baa61f8946f42acbaf47dc..4b3828eda6cb4c5524570f00033b081a6e027b09 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 b6bc71d1928612edadfc4dbdada86d9395a6d440..53a52fb8b8191d24ad540343d49786e143cdc51c 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 e1f5bfa4433cfd15a77548cc5b24b1cdba66bd1d..ed17815263a878c385a8cb5dbd4d3d390866f048 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 bccd00a1ddd0ad92b437eed5b525a6ea1963db57..53d00ca643b318a8e75b9b79dbc6bf63962fc3be 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 ed1d4aa41b8c6f636e48a716a70ae504ce12970e..a65a42ccaafed1dc1bf918256462b3b36c621e48 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 46d9d6ee0923483e874da09d4569a09e8fadcf9e..104f5ffdd04e38a1d3b30d04b096fcb8e834110e 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 04d4d3b4916dbbe510f331a5a2b70813530a2a7c..02cf1314367b366356ef9ef247a74bf09e1a75bb 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 a64f21a5f299a6493c334662b25fffacc2a63fb0..f3e23e69a6389e7e5d8db66af5060978ecff8a9d 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 dad8de900495e892e9bf39a106ec9d0f32261008..3e61689f6dd4115f14368a1e9991c57da264296b 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 081486b44382e9d35bc018cc9bb0583ed4e4b447..2f62551a49c17750941cbad33081aec6a762564e 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 337560562337d1d8a85f3e896c369e91b54300d5..949b154856c53558bb9e1a3656d86d6964c8a325 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 bef0e95e7416804fc69586c58d9b26b7e127009b..df6c7c5d519fdc11f464659d9ba82b7ac8bb3983 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 b9829bb22cc09b0410838dd5b2df9f9fe034f506..f9d8012c8cf513db94787d44b885c622f62fcf56 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 0f435be1dbd8cfb4502be9d198ed6d51058f453b..0de0a9757ccc201ebbb0c8c8efb9f8da662f8e9c 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 5684df6448ef51ea555761c9fd7e49aacede38d7..eb1127352c7b3b0f20fec61cc620f3aabdaea950 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 891cca00952815b000aeaf41660354960e4233e4..6b80b060672e54579969d6a4057aacd45bdb6913 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 5e09c04da30e47d5a92ed2ed494908c225d5052b..260b05f213e636baf490b957b8c2e55b6d53f943 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 233d74d5402cf7340d940f88866795279069e559..a7385d865bca4e420a23906d384e2ec299ea8a4c 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 15d8dddf4ae9555b0e5dc800abad1ba20622f761..e56c12f03f72c7712e027a3eb4399573ed7a745f 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 e8c6421664626120186cd7a4fbbd2a952ffe7de7..9ba858f094abd7bee213552dcb31673218b1491f 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 75b0e7c70b62c89f458bc268ebcce16680e40ec2..b1229595acfbf28d1c3ed16e6c046e4806fb330c 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 02d1c355808e4eadd77b98247cd70e76aea72b21..10578f544581159a08ced8ce6b09662ba8b3750d 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 76d83aea4e2ba84b0801e28b4d812105c11377fa..653e2e0ca878f4f825c5dab7c29d9db0a17e7955 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 fadbd3c041c8c39faedfe62874d4eba25a0bf30e..8da408107e55483affedb7e697eb79e8c8902ed9 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 1949a15e73d2584951295bbea31406d9fda3fe46..ac11ac7d1d12f6c9f1ad7f31d7ab40798e2f2339 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 00f87a558c7dd3b8af7392f87448ac8a00fbcd95..379dacacb526819218037c1e26a99230480750d7 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 6ceafa4af29221efd6edad65befa6449658f8e71..a2b94a13899904b1f888fd0a85b3e226c5ad344a 100644 (file)
@@ -51,6 +51,8 @@ properties:
       - const: core
       - const: reg
 
+  dma-coherent: true
+
   power-domains:
     maxItems: 1
 
index ef3143f4b794cc734011a70855b657c64efeaef6..004d3ebec091904ea7d17a4e92f87c3fec610e43 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 d4e187c78a0b525717b776d41a0c6b0421f8b9c7..21fc6bbe954f9787bcfd5332d68314c4ad19baef 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 b14e6f37b2987c40b6ed26dc759064cf021ff4f9..4e3901efed3fcd4fbbd8cb777f9df4fcadf2ca00 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 e2a72deae7760195d27fc450750d84144b1c3372..c68c04da339982b7cfc6f3d01d8f5406d92bd991 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 a2b3cf625e5b3962f3acfe93de02f3cae2b6123d..64137c1619a635a5a4f96fc49bd75c5fb757febb 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 8da4d2ad1a91bf10fe8dc0f06f2297c820ebff02..ae611f7e57ca42a439a93946342c2421fca8a303 100644 (file)
@@ -30,6 +30,9 @@ properties:
   interrupts:
     maxItems: 1
 
+  vbus-supply:
+    description: VBUS power supply
+
   wakeup-source:
     type: boolean
 
index a21cc098542d7944093b2492026857a271a44167..fba2cb05ecbae9476c1360dcdd624fede4ccc9a5 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 2b3430cebe99106f3b6201ab31d4d9e3fcc55627..256bee2a03ca189f360e2b677f101dce25a0f368 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 c956053fd03664a90677f5bc1842fb3d1551ecd1..71249b6ba61683128df1e300a3700683b0db0e6a 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 da890ee60ce6e71a11910c565b6f805470782e4f..c676956810331b81f11f3624340fc3e612c98315 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 a7f75fe366652bb2dcec6bf6e87c5879d31f1fce..f295aa9d9ee79f26c6ecee0f64a801e778e28753 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 5079ca6ce1d1e9e2b52312439e4b1d48b262200c..86f6a19b28ae217643bf7a63a471f74819d18238 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 64c8f73938099cb33d97f14af9343803bf1d1f4e..b35ac03d51727fd0de82636391766f14292f3226 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 a09686b3030db32bf70d3f817248182d07b042aa..6ec391b9723a5fc764f6b16f9216da9d85d9c154 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 29ada89fdcdc5a8e6bb0b08127d332a4c0ecdb25..3e0a8747a357073d9a861bdbe31a9154acfafc9b 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 28199b31fe5edf6cd191becd6a3c1e91c7702ac6..0ee9de99b3aed25a1e5f3502405dbb5cee7e34b7 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 bd5cd100b796e1d5b2fa5bcaca4b7db84b2872eb..0e87f61c90f42a2258c1dc02bed1807b94788db7 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 df8a6f3d367e065313b909c4b9743044b1767bb7..74c22f67da213b8e54109785a564d3be756fd6c6 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 f238aa4794a8b017ebba8a66abcc44ab5778c63f..0e7c319897f3a66413d7b40273007ab2a479d2df 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 46309c9953b2b668083fbdaabdc69ae0ead7aec4..1477a75e7f6d7b87b941ee2ec849b80407ca1958 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 01e14ab252a7db6074db45eb9c59302250386243..dd988cc9d582f583365d4f530ca298331f901583 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 25aed298ac2c2e2d37e2b441c9d92ac68801be6e..f576e61bec7041455e10ac18c92f3b33ec0760e3 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 307215a3f3eddd579e6733b51a777fb45398bb92..6b9df09d2822f1c8e5086a2fc0bda783ca224812 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 ebb146ab7f8c7d6679f7db4e31196242844f9038..6889405f9fec1a55d0bd5a336286ced104573f9e 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 cdc4c0b9a37455778da24d7137865bab0974bafa..f0f7ddd3dcbd21b5e44383ff758678deb8344731 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 9fbef542bf670015c5b34bfbe1336e7e295bf8ab..fea4525d2710cbf58cd4236d3276bad4cb318df9 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 df599bf462207267a412eac8e01634189a696a59..d9b7bac309537cbfd2488e7d4fe21d195c919ef5 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 e2fe4bd5f7f01569c804ae4ea87c7cf0433d2ae7..878beae6dc3baaa9a2eb46f7a81454d360968754 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 ed177c04afdd172f7b2cefc3e19fef31b408b38c..81b1eba2a7f778b149da218f73803a892a54d055 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 a01af169d2498605c38832d621424105430d1de2..b46de214dd09ce6141a6da617288d714d098518c 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 9e13c2aa89112779925d65a428167076d9a91db7..f909b1d4dbca190ba8f50eb12fd3c84b79e30329 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 9ff142d9fe3f4576fdd3230a966c8a6250870de7..f785e0de0847b592e58182c46778e17b1d61e870 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 18ea6592b7d74d0cb7dd97fc7112301aa23680d9..23699954809404e24d929fd1127a6a6f006ab694 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>, <&xtal>;
-       clock-names = "clkin0", "clkin1";
 };
 
 &rtc {
index fb28cb330f175a075c2e8214dcac77a1d9128efc..0bca0b33eea2a5fb05ef6b1f9fe1cc4219287eda 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 2aa012f38a3bf5c38472ef133f58c90ae52b81b7..1cd2093202caa645aa64d11656034e9653182902 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_c1_pins>, <&pwm_d_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>, <&xtal>;
-       clock-names = "clkin0", "clkin1";
 };
 
 &rtc {
index 9e02a97f86a0ef76ac856a8983f4aea0234ec859..fdb0abe23a0c8ba71eb2d931aa9582fe11ad7b62 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 808cd5778e27b9930037e74175bc4001dc3c7e32..adc74243ed19adb3d8e6ffb61117b8204f01460d 100644 (file)
@@ -88,7 +88,7 @@
 };
 
 &portd {
-       lcden {
+       lcden-hog {
                gpio-hog;
                gpios = <2 GPIO_ACTIVE_HIGH>;
                output-high;
index 19d56e9aec9d89ce0ad109fbc6bb6e26327997f9..a351a97d257ead984a3ee05a8a0e50714ad7fb43 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 51a716c5966986bffb23f640af0736862a3f63a7..0adeccabd4fef902dcf7203cbd0454968a2b8294 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 8208c6a9627a8cee2ed584d21b87c53888742307..7aa71a9aa1bbca4f6dbd327e2728bac54661d2f5 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 f7daa3bc707ef0219a392d9d23158902b7ec2115..cf32ba9b4e8e69abf1cc2b4e2766fa3529a415b6 100644 (file)
@@ -34,7 +34,7 @@
 };
 
 &gpio0 {
-       phy1_reset {
+       phy1-reset-hog {
                gpio-hog;
                gpios = <19 GPIO_ACTIVE_LOW>;
                output-low;
index 47f03c69c55a5413774c175c943cd36a397d8a1b..9d7cff4feadaf94cf2eee4a6e8b4e41c3796cc4f 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 b65f80e1ef0552c1fc5a761062f7e628720aa908..302cb872efa1ecf08f8101ebd51a2004e27a46c6 100644 (file)
@@ -56,7 +56,7 @@
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 7f527622d3f24333912d0957f57d5f87281a8814..c11f4f7dac94503658efa76ede31ad73c4962570 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        atmel,vbus-gpio = <&pioB 15 GPIO_ACTIVE_LOW>;
                        status = "okay";
index 9dfd5de808d18add2cfc0c04f0cfc28fc2b604f8..8e9e87665045c4b6bf5bf85deda0c6e6ffd05ed8 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 5ccb3c139592d0db6d5e076547f174be647e614d..892dbd8dbbed308716b6ee291842f0e4099e1d6b 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 2fb51b9aca2ae3f78a7c21a5c962421895e78db8..49dc1a4ccb367ef7da71a7371c8392141e2ee6fc 100644 (file)
                        status = "okay";
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        status = "okay";
                };
 
index f3ffb8f01d8ac3bec9aca851282dde4dea0514fa..45edf6214cf7ee86284e6541da8d53277e4bebd7 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 e4ae60ef5f8a04115db61d6f1931382802159621..10d69f6957cfdea8220db15fee0f43e96fea84df 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 4bab3f25b855a1ce7e44196a7d5a60b8d81b874c..7e77a55ed41d8b96e14129967120bf01282840b0 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 5662992cf213e33ed022c973f53eb99d0227c8af..d2c43957497dc5d147282c081fd9aa10951c9969 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 8adf567f2f0fe1d3bc59fffa5d5cdb10ba2fe21b..b9725e4005019ff31a64170d591093dbeefb81fa 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 95d701d13fef665de48055e9ff8b300aee7c67b7..0ecccb9a809df6eb37e5a9c336cd5159f6b820b8 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 20ac775059ca42d5a7ae66ad36dbb1be2055f768..69107d6cd26cdac9dfa6c566e7ccca7a00ce7ef7 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 0f86360fb733ad1e11e22936be08055de5a19bcd..30fdc4f55a3b095e59ef45e80180ac16c88e47ff 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 0f5e6ad438dd99ca46c4080fa285cc79a58434d6..2543599013b1d315b4045440d945913de1c5a7c8 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 ecbdacf48708e658ac7da72c5b6565146b9118c7..c5fc516670666ef331cad9c5a898e10ab3d1b05c 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 02a838541dc35f70e4d19dca86fb363b110022d2..2a4c83d887331fcc5e75e50a39d0c85e4d506f31 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 0bf472b157a5dfc5ce591e2d947382b7c646319e..ce691c4692b9a57bc08d686a1065e12d41b21299 100644 (file)
@@ -89,7 +89,7 @@
                        };
                };
 
-               usb0: ohci@300000 {
+               usb0: usb@300000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 0038183e9a531fdbe7e1e3d083d735ee10b8c6f2..ec973f07a9619b2a8fd78937dbb5f04f4103a3f0 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 e8e65e60564d9d8f55c87476f20cc4eabc3c7b2c..8522a210b48478d2877ca409992affa28da93e2f 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index b57a7fd67197f915a0399d8a129fc18b829cf0b1..0b556c234557a21e12d64bbf18a1bc67f2b98cf1 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 a8f523131cd67a5f19f7ec1ae69aa402083e50a1..313bc2797fde775fc2f75b4ab7eccf6dd80312f9 100644 (file)
@@ -31,7 +31,7 @@
        };
 
        ahb {
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        status = "okay";
                };
 
index b95d4016ae9f6ff461ad5b7b35817e1e0ba13d0d..3e9e5ce7c6c884954023f2dce7722c1ecc1743dc 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 f25692543d71f16ba0082540f1230a46566972b7..471ea25296aa1497e0d8cc43d71ba74ddbf5011a 100644 (file)
                        };
                };
 
-               usb0: ohci@a00000 {
+               usb0: usb@a00000 {
                        num-ports = <2>;
                        status = "okay";
                        atmel,vbus-gpio = <&pioA 24 GPIO_ACTIVE_HIGH
index 4e7cfbbd42419e1f95d859e902c8d54b651481da..84a7287107f8d4a0ae7a590129cfad4668e98562 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 157d306ef5c983bcad34c6a07d675525e412d24f..535e26e05e998e202efbca07d29cc177a1d526f9 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 071db4f16313de1a657bd540ea24a6be94e5ce74..2a31b2f14893447a80e26e39b057eab5e04f01c1 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 844bd50943fcf310256aba0c78452aded79a00d7..2f930c39ce4d7945eb769a995a0d81a2cd6e11c1 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 643c3b2ab97e524a15f74ef4ebe6d98cdef76f4a..b06a54e8e2377919ab75bbf147e9f22165d25c71 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <1>;
                        atmel,vbus-gpio = <&pioB 7 GPIO_ACTIVE_LOW>;
                        status = "okay";
index 27c1f2861cc34d7703c7bc688c14a4c7809bf7d0..17bdf1e4db012a01aefe70a8be0cce911de36ed1 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 ad7a0850252a1fddcf25eae341705454c16687ae..52ccef31b391eac50e592d1f1103329254a946f1 100644 (file)
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 6d519d02d190ee49c2e29de8a29234def99b9763..40c5111c2f0a0e857eec14429601c392c16a11d5 100644 (file)
@@ -45,7 +45,7 @@
                        };
                };
 
-               usb0: ohci@500000 {
+               usb0: usb@500000 {
                        num-ports = <2>;
                        status = "okay";
                };
index 005c2758e229c36dad92f947ca91e5586284757f..2a97e2c0b8944836cac4b6b92b0321fc1c2a7b8e 100644 (file)
@@ -57,7 +57,7 @@
                        };
                };
 
-               usb0: ohci@300000 {
+               usb0: usb@300000 {
                        num-ports = <1>;
                        status = "okay";
                };
index c349fd3758a628941b35ee715c89a871f57ef1f5..2258e62f5864451ee671001af7fe538e6868f6fe 100644 (file)
                        };
                };
 
-               usb0: ohci@700000 {
+               usb0: usb@700000 {
                        status = "okay";
                        num-ports = <2>;
                };
 
-               usb1: ehci@800000 {
+               usb1: usb@800000 {
                        status = "okay";
                };
        };
index b8b2c1ddf3f1ebd2ff8639cf488b4b5378df27e8..b075865e6a7688005d471665459b3f6f1f26f7a4 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 3f99451aef832448dba7c263295df529a25a9fb9..dc22fb679333e743f0aee23b76f618ec2aa3830e 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 70f380c399ce09899dca41f232da0f740269343c..e95799c17fdb0a509ee7470f5c3ee690b7c92909 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 3652c9e2412442850bbc7e1d5b1097ec7a414a40..90da04b84b393f55e7ed2189b5e66ac3a0c51912 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 355132628604ef18c74370a414a63471210fdd43..59a7d557c7cb2e218a31d7e9906dd77061359b84 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 854b30d15dcd4a239712e5a67cd978cadc6e570c..b6710ccd4c360bdde1ecc05d4ac78cff501bcb2c 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 ef6d586ce887d86d024663e57faddb80641eb5d7..f0f2a787d669dff132daf4fc82e51c463ba41e04 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 70e5635c78edce73095798b3c7ad9138f0962c33..4d4377f51bec6742fd42982fe657ae4097129558 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 62b7d9f9a926c5be5a7ae01e66880e9f2b7af341..3dd48b3e06da57b0cb1e9763455d9172761ac9d6 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 118d766a1265e5f0a47442b0ef7751be344c4255..cebd5696a2c1be45010cd281f2fecc4a92cc49cb 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 66f8da89007db4721ba08a618037d0868081a568..e7f7b259ccf3a670db253d0e046ce4785b24d64a 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 8744b5f6f79268a86e5829557f6f92e87b5bad9c..8c3530638c6d70dc58ab1780ab12463e3ac504d0 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 45745915b2e160e8710003411caa2d8fc344157e..60d7936dc56274c42aadaa0bf2a006b60f654dbe 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 08d58081201adf3a4124cd51c8fe267eba009405..5b1d80c0ab26a7e7b98ba6408c4fa7ef1d2b68b9 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 2f667b083e814a2eafb5c582f29d821cd7e47990..a2f748141d4b514b28f8c9d44b16b487fccdeda5 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 7d10b36db1eef0181223e4ea5659d0e270b85136..f1946e0996b7e8b18beb14fe17e28fcc33054f4a 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 f65712015d40ff5a55fc7c6fefd8ff901a53b20b..4d104797176c2c7f85716e12ae1738a475211e4c 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 86f14e2fd29f3a0d31508ae8abf5a41632aef1c9..4caf2073c5561e8508afb5c2e87f2cbfec7f963c 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 8f1fff373461b781121d23752dacbef9034a9f44..ec4f0e346b2bf0ddb97ef62ac4a9be61681a3d04 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 e118809dc6d98bd411aff7470a1c520473c679bd..67764afeb01364ade716fd19979710445c7a5484 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 00006c90d9a71a6a363632740ac6158f6adbb953..813a81558c404188ae726b249d8290ca0610114f 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 1b6f444443dd1b191709235bf18fae8780fb7988..d76c496b3f713a81b572c9a9db085fba5b2e2f7b 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 cc88da4d7785c5083e2b85f613c6213c9a03772e..8323e3a56a1f61c32d899fc3a352d1a36144599a 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 c14eb7280f09e62a3b1fcad5321e319fc9bd7910..3cdb87ac1d7c7cc5072235bf2d5f80ff98cc15ab 100644 (file)
        };
 
        expander: pca9554@20 {
-               compatible = "pca9554";
+               compatible = "nxp,pca9554";
                reg = <0x20>;
                interrupts = <109>;
                #gpio-cells = <2>;
index e939acc1c88b7c17a5bdaf5a934769f79e5ea8b3..2892e457fea7ef79ac5877f0a3c893f29b614fdf 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 845e2bf8460addc61b16cfd7e3bba2b3cdec76e5..faac7cc249d0ac0bc2b24241c5249612d0150591 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 88be29166c1ae228fcba39d2e53c69fc99838270..b13000a62a7bcd87c74f66d52bcb8f3cc4696b90 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 9f33419c260b69a911dffb2db71d1b2b5239a58d..3525cbcda57fdf800205792e9b64e5219c5b06e7 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 8cefda70db638479c2b4d57dc20e23a8a48f9093..ee2c6bec92e8e27ab1e6749ea801779d6a57067a 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 6152a9ed4768224a82dcbcb9e4afccaf441930fc..07492f63a1f801e1166346049074a5d019fa6219 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 828996382f24697d586987fe1903f7af82ec9f58..e8fd37dd88355f3bcdb309d11ec72d03815930a9 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 1d0966b8d99e2c5117c08dab95dc05c56528d997..0e404c1f62f26ae7ff51246a33c0ad05f928b731 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 0e839bbfea082140dd5ac4744751368969fc67c0..911ccbd132cfb9c0c049608cbc16d1e12a5052a4 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 f2386dcb9ff2c0c11e00069b81689c81af7f5446..dda4fa91b2f2cc28ef59e2d6513dc1732982feea 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 c9c0794f01a2b8c88c2a049204fec1c04d2edc76..2dd635a615cb8fb0972342cafd13e787b5441a5c 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 f2a5f17f312e5840851c6083c3c9aba9184ceca3..2e7b96e7b791dbdc1b8503d727e3ebc2a76ea597 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 24192d012ef7e640d76d5a9fdf4a5f5786005781..79c8c5529135a45c3a0dfb5c0bbeeb041e2d73b4 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 576a7df505d3b93240db6500cd1817d532f73369..4d948a9757f9f912895be4b5dbe72ee8ca4736d3 100644 (file)
 
        sound {
                compatible = "fsl,imx-audio-tlv320aic32x4";
-               model = "imx-audio-tlv320aic32x4";
+               model = "tqm-tlv320aic32";
                ssi-controller = <&sai1>;
                audio-codec = <&tlv320aic32x4>;
                audio-routing =
index aa8f65cd4adf7e7e78f3fd279ea9a2ea39e0ea92..2966a33bc528a9968fc30c1d71fa93d3592e88da 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 6cde84636900bb0065083fe8cf4bf90fa13d57f6..17236f90ab3355591028ade5ce811cf7e22512fb 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 22dd72499ef27851f13fe02ece118f30cfbb40d4..2629968001a746dccf69dfae58db3d6b5aeb3238 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 941d9860218e96673048381f8aab8f30707d9b8d..67a3d484bc9f12daee28050f056b3905d100b937 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 0f01dded4e3d9c591aeccf6edccbe709359695c9..ca62e7933116b0573ad459a9e55828c7051fda4d 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 722182f5fd17229ecadfc70947a574ce467fc4fb..2492fb99956ce39ec7a763bbbe9c15663fa5024e 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 607cec2df8615088d47e09d8ae1597a717df41ed..20aed3946214e9038b315ddfa653c44318be544f 100644 (file)
@@ -8,7 +8,6 @@
 
 / {
        model = "Toradex Colibri VF61 COM";
-       compatible = "toradex,vf610-colibri_vf61", "fsl,vf610";
 
        memory@80000000 {
                device_type = "memory";
index 6f9878f124c44b49fce78f8026f733907da8c1c4..4f99044837f8d6ad8aebc4acbdd5ed041c9a2385 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 acccf9a3c898e0fb9eba1ef4aa320908d06a6b64..597f20be82f1ee044e14bfaf3bd05cff37a8ad39 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 3bce5876a9d81aac6c05336df0c9c93db148e18c..4f002aa7fbafc5cfdcb8d97b30083e4fca0d6dab 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index d7c0a9574ce83144f134311d8980953290ee82cf..b1e20579e071096cc37353cf934fabec0735f678 100644 (file)
 &scifa0 {
        pinctrl-0 = <&scifa0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index f746f0b9e686bb49e98a62c64a5f83fed1192c6a..4f97c09dbc9fe95793fdab1f95ef65ae42748da0 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 e4e1d9c98c617883cfc04ed5f9a95e8ec379fd59..e9f90fa44d551be29622973baec25dbf89a8d36c 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 08381498350aacde48856b83966ce47e9e78850f..f518eadd8b9cdad310cb54d79d84131623ee25ca 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index e57567adff558844c3dfc4d27278879e7ab7acda..5023b41c28b361730eb5bf87805867e8320c0ffa 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 a3986076d8e3e99373a4b1f4bb5ce59b46a75ab5..23ec0f8a6651083441ee4252f287a0bc0ecc8c8a 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index bfc780f7e396b4087b0530a73ccc6c987e565b7c..93bd81723c8fb4b6178c7aff6c53b1a7222bf420 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 08cbe6c13cee46567fc7d58a140c57d91ae20400..7513afc1c95853eaeffe899838cb22e76cdce08d 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 2c05d7c2b37765251357768bca81b9626e6c7d8f..45b267ec267943759d1deccac97c29b9b4b51acf 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index e48e43cc6b03d8c81c4a62506c07b0b721a4377c..fc6d3bcca2961f8e17a2f53a3bda819e0506be70 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 f70e26aa83a0a4d3e06c0595d1d37237ec800ce6..3f06a7f67d62ad6b31e465a7fa29029269c44394 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 2a0819311a3c4ef3d6cc87e34909d3a92347d9fa..342825605768037d50f140aca0fa24887e497ca4 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index bc16c896c0f9b94a25a319ea5d20aa24fb3a63e6..92010d09f6c40aa00f941003fc9194fed1877a3d 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 7548291c8d7ede43920e2387f104239658e72445..87e03446fb4de705e9d3e7f4a141e4c2392c95d8 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 087de6f09629ec92f5dcf4ec4a7699cacf3a875d..b57dbdce2f405e813cda136de0dbff4ec8b0bce7 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 52c5baf58ab9c38b819701301b860ffce187a16e..535cfdc4681ccf8a7d975a19ec6bfe51642722a0 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 0019d12c3d3ddc0f039f39861b3a0a93eafbac91..8512a6e46b330ae07ceb8c454805f0e50dc4502c 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 853dc21449d99a8b12d3e27f779ef1b65d133d5d..9902849ed04065107c1fcc23a9bf7e764cd335c1 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 95fafc51a1c8e89d3bbcac9cbe16ca2e7f9bc4ac..40605ea85ee1dd4cbf8489b8d446427c933ed598 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 b9a87fbe971d6466fd9200588d1ae23dbf078a6d..0daa8ffe2ff5dac9042e2bbfe89b89ab41c91bed 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 5f9c0160a9c4928c98a791fd8852b10a83464078..324f7bb988d11daaae2b61594d4881f60c6698b7 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 4df10379ff2215794f5c2e2e8c817adad5cacd43..173401c58d534f9e326c91ebb49d712eb00ee9f5 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 e27837093e43d82fbe7ce183efb42efa262c69ed..70e33cdd519a307ebb777344a9c3abfa17a345dc 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 3fcef3080eaec8180f245eadc12b2560fc1b4976..150dd84c9e0f749585de5fd4edb3bc673a8209ea 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 8fd076e5d1b01998b594714d024bac551d9fcdb2..4b8bfd0188add28bfc7abd808eacc00a2985f847 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 a7db3f3009f2a3ea12530a4168c040c3b99b5889..153b8d93cbee2c30b399c0770f2022b307fe0808 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 8b9ab9bba23bb133634ae70f778555f9ccb9755b..f5525c04842698683560eeabf63f1535e02102da 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 53fa6dbfd8fdfa072c6e1e7937a1cb51c3b0f885..14f644156a6f41418ed6418e033910db5e272c64 100644 (file)
@@ -51,6 +51,8 @@
 &nfc0 {
        status = "okay";
 
+       #address-cells = <1>;
+       #size-cells = <0>;
        nand@0 {
                reg = <0>;
        };
index 6ed84fb1590224c8ca7668bd9634b138a564f589..68b867e8369e03af7bea88d82cf674e158fad2cd 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 54592aeb92b9dde176d21b44327112c1ae3b382f..366af4fcf8d9072f38a8f9dc62cc57e2b5c3437b 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 6efdbca9d3efb924900b450fa0d95a6ad521fb3a..6955637c5b1ac5c6c9acc7df6eab7e3e05ebd0c8 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 77943c16d33fcf57b3e7742a6dd2598eac81263a..3b803c698473ed0803a0eef51f063c01b88675ef 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 0dd352289a45e58150f75896a590873f66773174..5fe799c3c7cf449314fbe270c6bfcc7d54fa1602 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 56732e8f6ca1878fd50a23188484835dbfa9fae8..f9a086fe66d3edd131de94eb2dfcf16d95537a91 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 d2359b789eb890fbd95d863ba8ccb59018af8dd9..24520e7d3965dba7de731ef988f9ca52b7df896b 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 38d96adc870ca90ea6d987e12346fe0a81d9990a..103e87ea7253523ab079a7741b4561cd0e1b0d3d 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 6a5a93aa6552ce229bf8effc3838c21672f2b91b..52ba569b2b9f76124c0cb0a1cbe85d5954f8fabd 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 33b02e05ce827309ffdca2643b67cae44d8c74c4..defef9c8da1360ca2cd618d6786112c567afc4be 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 7b87e10d3953b46b14fa01b574b2c91be91e1c57..56b917eec7837d393bcb79204e857407b67486c5 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 755f6f109d5aa04fad5dbcc7e0ef92b09205234c..fbc7d1b12e94f95516404aaae971acf7b3c2332f 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 cf58e43dd5b21dbf4f64e305a4b4a2daee100858..d53b72d18242e3cee8b37c7b1b719d662fd6db8d 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 55eb1762fb11364877695960f5a2d3e42caf8611..26b13694091735da7af977e42f8f546d7d5cb078 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 a387bccdcefd859e73ebf934761c1d14f4fb64b5..a7e3be0155a8416cad8649ff925591ab6cf053eb 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 a24adba201af29a3a117222c67da5d269629fa47..f9f6fea03b74467f4a0bd8aa8414c7481a5c83a9 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 13a0e63afeaf3df2ebfeaa8559a965425c324c5a..2c64d834a2c4f79890943f7e6e2193ddda45ff44 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 ab87c3447cd7829fc3597c1d11117a5f2a8331f6..f005072c68a167913cb5e64859171ec1a3f3f0d3 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 d05dc5d6e6b9f78d08fcfb677ec8bdc8bc68b9ad..e34dbb9920216df584b8079a46357945fa31a80c 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 a231abf1684ad6cdae0f0d8f39869017dd0dc470..7e17ca07892dd003a13b217cc8b6c8f480dda961 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 ff453336eab1d16fc67bada040fb9445f6629b9e..bef4d107482f2d8e05bf20ff58eb0d7b692af207 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 da9de4986660f2d7c3d325a7850812cf0ae04d21..5a72f0b64247d591b571ded564b4aa23cdce814d 100644 (file)
                        al,msi-num-spis = <160>;
                };
 
-               io-fabric@fc000000 {
+               io-bus@fc000000 {
                        compatible = "simple-bus";
                        #address-cells = <1>;
                        #size-cells = <1>;
index 8b6156b5af659f864ef9506dfb8d14cb5d6caf9c..dea60d136c2e3d7d95c8ddafcd06af896e47a2b1 100644 (file)
                        interrupt-parent = <&gic>;
                };
 
-               io-fabric@fc000000 {
+               io-bus@fc000000 {
                        compatible = "simple-bus";
                        #address-cells = <1>;
                        #size-cells = <1>;
index 7c82d90e940d3f0aefe634b8e368c24181b2b9df..8862adae44e99296e6665cded23aba14cd80e4e6 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 58e2b0a6f84192d8b04277d8b0f40969cc33474b..b34dd8d5d1b1737cdd2d0323625ad2b286ce7426 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 2dd2c28171ee32398b0161891650f34e72d19564..73f687773ce6598b4726585f1aa513141633838b 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 d3d931eb7677796fe46d09d946d7e7b6b8b9b231..a611f8288b3e668f65ddd9becb82f83807bbadec 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 9259e547e2e814d957b46804ea1d56078401d139..18b0c2dd1b2d769332f39b43df022b14195a73c0 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 de10e7aebf2114e58f50aa10a99a58b85bea536f..a06838552f21c58d1f6b239d9d56982b83a1f62f 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 17a6316de8918f31f3f7625f2eda06a60664139a..32ed1776891bc7d1befd01a76c76048631606f5a 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 e9b22868983db5d5415c3c3e485d33a95820b915..a6924d246bb1e1721a1a9a3a8285f98c003c2640 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 49b51c54013f155f78ebe50ea7c13b5a5663afae..69834b49673d40ca1388f3679675854a6eb7ccb0 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 a457b3f4397b33d1e327fb2f13e2c8d49253ae5f..9aa36f17ffa2d0d16bb6f14ed4488dede5ff3d78 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 c779a5da7d1ea06f4b7dfb626928f4cb1b90f7e8..952b8d02e5c262ff24139344fccfe4a174571038 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 ea51341f031b5cc3dfc45e2618fb054a47fffbdb..52fbc5103e45015a07e894f147d67075a9c674c5 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 f70a46967e2b450b0a072c4e8df10300a6417b47..5407049d264706c6e44def460d1c6e9c3ceb7e44 100644 (file)
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
index 32f98a1924942fb6162d53ca16f1e5d25621a1ae..01da83658ae3a7844caf4d1b141d96cbce424910 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 65b963d794cd579d15797195852ea2a68d987955..adedc1340c78478521f462a18fc5280ba11e7023 100644 (file)
 
 &pwm_ab {
        pinctrl-0 = <&pwm_a_e_pins>, <&pwm_b_x7_pins>;
-       clocks = <&xtal>, <&xtal>;
-       clock-names = "clkin0", "clkin1";
 };
index 08c33ec7e9f1debac17d244b1d4eb2fbc5cf56e6..92e8b26eccccba1e2aa83378b74870a68344071b 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 d4e1990b5f26b8129fb5cc1617e759c568006a1e..54663c55a20e68213c480e7fa7dac7624946cf6f 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 de35fa2d7a6de3cc6b3a8b296c06daf677497e4a..8e3e3354ed67a91873875540972638b98cadd6db 100644 (file)
        status = "okay";
 };
 
+&clkc_audio {
+       status = "okay";
+};
+
 &frddr_a {
        status = "okay";
 };
index 16dd409051b400c91819b71cbd2f66bfd642191d..48650bad230da20baa1fb8618021708bbe53f63f 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 09d959aefb1843d8513881815b7127c1a5bfcfc6..7e8964bacfce705a3de4c208543324569c5cb3d5 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 39feba7f2d0830c72233824dbe08f98b073722a7..fc05ecf90714dd999276d751ec565ab7dcfb1db3 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 4cb6930ffb19620de9eef45029cfa43b08640a30..a7a0fc264cdcf0f66565f9a52144f583dbbf16bf 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 d38c3a224fbed46fed0a96149d540575d4048149..2da49cfbde77c61f6bc818fdbae1d08c898b377c 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 45ccddd1aaf0546632c81a52c8917a923beae883..6da1316d97c60c8445477375bddb161fc0c6a7f4 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index 2673f0dbafe76456d03617014d61ce0105746376..7d99ca44e660c2763f85fca98c75864b4f8e8969 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 cf2e2ef816807766254086b8b89727d375cb6395..2ecc6ebd5a430f4ecfe1e6b9a96d2ece8e1d86dc 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index 7d7dde93fff3f94d85fbc23b9642b53de1db772f..c09da40ff7b00b86c46c3ea48df09c230fd35dc6 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 /* Wireless SDIO Module */
index 1736bd2e96e214c0535491c87dd28ce6f45f0db5..6f67364fd63f98f6c69b03a083845fc4042969ca 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 /* Wireless SDIO Module */
index 3807a184810b869abcbc9081453f2f4552f66d75..6ff567225fee449f1c03a6b74be59cf500186222 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index deb295227189d29c78e9bb929bbb4a94822c5fc7..bfedfc1472ec51c2351d40925b78d0ad5922e191 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index ed00e67e6923a0392acb776e886f848e9522c983..6c134592c7bb81a1c0eb9ff0f80e58028cd4ce5f 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 c5e2306ad7a4b5b4270db9cbebf27a44b89147ad..ca7c4e8e7cac810853e98149ccd9d2815f519ed5 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 2b94b6e5285e29934d6e29d292a3412ffbee1597..4ca90ac947b7b03f77315d8f988a0830e49421c1 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index 89fe5110f7a2e7abfdf973bb774d38010f28f091..62a2da766a00fc588514e63977101c86b7537dda 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 /* SD card */
index a80f0ea2773be600436fb02e8164e2c5f2f040fb..4e89d6f6bb57fefd04317b514c6c26b5f540f96c 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 c79f9f2099bf8213102ccb0fb378cbd54dc52101..236cedec9f19d4bb2aacfeef2b591f1063aefc07 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 /* Wireless SDIO Module */
index b52a830efcce61c4c29163dcc22b250a4b6b93a9..05a0d4de3ad7e91b5ebc4ea60540bb32be93e9ff 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 &saradc {
index f58d1790de1cb438cb6c4530648b0a5840f76995..19b8a39de6a03312405aea3c0b4aa4c86afd84de 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 96a3dd2d8a99dda08225d60f2919c2f6ffe87856..2a09b3d550e2b635acbd78e36d3a986b40f7578d 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 7356d3b628b162129eb123234833ed3143687059..ecaf678b23ddd6f0e1f27532059aa706c29fe046 100644 (file)
        status = "okay";
        pinctrl-0 = <&pwm_e_pins>;
        pinctrl-names = "default";
-       clocks = <&clkc CLKID_FCLK_DIV4>;
-       clock-names = "clkin0";
 };
 
 /* Wireless SDIO Module */
index 929e4720ae7683dd2a9d0ba4cb0aaff14d388257..ac9c4c2673b1e28762606bb18791a19e2fd250ae 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 d1fa8b8bf7959da7cdbe119ae379a90562741c9b..a3463149db3d2ce670cce5a7b42308bcd3cc771a 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 81dce862902adeabaaf5a1007894bf9b4091eb5a..40db95f64636d29294ba24d1a335435c74a87729 100644 (file)
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
index 9c0b544e2209874ee8b7c32a8141da5bf4658c19..5d75ad3f3e46b7d8f5a036df0c42f0af1ffa2f31 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 7b0e9817a615dd3949bdbc54530318d8f17be6d4..ad8d0788376039e622f303f3c7a6b4dddf0521cf 100644 (file)
 &pwm_AO_cd {
        pinctrl-0 = <&pwm_ao_d_e_pins>;
        pinctrl-names = "default";
-       clocks = <&xtal>;
-       clock-names = "clkin1";
        status = "okay";
 };
 
index 2e3397e55da2b47bf3b1b388b8b1821aa0f1816c..37d7f64b6d5d8ffa4aca0c4c56741da29dcf943f 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 0b16adf07f79b15c75cfdf04605b26d4b716354e..8868df1538d68595cfe92c80b1fcecee42d348df 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 741c5a9f21dd2fc6dd3ee24bb097584552d9f240..dd57eb1d34c06e6be66dedfac567fe60794649f0 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 b27ef568062643cf4feaf27da28017b2c07ab0bc..f3696d22e71cd126e8f2dd3cbbcaa0555609e89e 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 0218ecac1d83649a14a890dbf3d91e590bb73b19..d820b0e430507f681a5f2aa13a498be98080e1db 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 4276bd890e81b16f19b04e1716a55f32f9a371d9..cb42c5f2c1b6caed4ae04ca0b6173e23bbda47f0 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 6e9046ea106c084020dd2e4cd18b5e1f7c6acf8d..72322f5677ab15820675a0c4e04eba0a4210bdde 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 e94d0e77653a8a4564d4a5f27fffcc592380bd9c..91b06e1138943a13844013b6ea27ce21edefa54b 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 6d6b841e7ab0bd24009c5fb4b76face6bf89d544..162eca05c2d9fd621c8570f5cefd77de6fcf9c7c 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 d20194b1cae7331360f791f4578c161b8d23eb23..7b765820c69e963e747e329fcbae62732bdb020d 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 23ee3238844d953b10ea12c26352de7c3f0425e7..d56d49c048bbf55e5f2edf40f6fd1fcff6342a9f 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 7e4ad4f7e49953bdc58a9df44d28dab5de5298ee..79df5c7832600beb994952222fdf15bca93c2cb8 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 49b04db310c6e8fce44606f40f0cc643246c5206..1dcf80cc292066d756e183c815712a6f747bf5db 100644 (file)
@@ -47,3 +47,7 @@
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_mipi_dsi>;
+};
index 32570ed3cdf009649e0cfa38dd280a39141390bf..c1701e81f0c1a2a3e3f98e43659ee1771df7fe0a 100644 (file)
@@ -41,3 +41,7 @@
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_dp>;
+};
index a1a5690e83713c73335412ef5c0a942344e34630..deb7c7cc90f62541c02db606d9c9729782baddc7 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 fa8ead69936366999786cdd4910266ee08b5ca7a..87dfc13d74171f62bf3087401918d9d41eaac560 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 b1c875e692c8fb9c0af46a23568a7b0cd720141b..e9b3140ba1a996eeb91b3f60470833060b632bd2 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 b31f1a7a2b3fc36e7dfa480d27012d6d0fd56f97..1a994c3c1b79f088d685e13d1dc16e7d1e6546f4 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 2e471dfe43cf885c1234d36bf0e0acfdc4904621..22ebc78e120bf8f0f71fd532e9dce4dcd117bbc6 100644 (file)
 &fpwm0 {
        status = "okay";
 };
+
+#include "spi1-nvram.dtsi"
index 1e5a19e49b089d4b3c5e12828b682d1993e35e75..d5b985ad567936111ee5cccc9ca9fc23d01d9edf 100644 (file)
 &pcie0_dart_3 {
        status = "okay";
 };
+
+#include "spi1-nvram.dtsi"
index f60ea4a4a38716b2a618d5cbc9fabd5444034170..7048d7383982cdc49a80d1f30f76276667d9844b 100644 (file)
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_mipi_dsi>;
+};
+
+&typhoon_opp06 {
+       status = "okay";
+};
index 8984c9ec6cc8e3c86281a3da719edb56c5bb7f5a..7b58aa648b53dadafb3a01d9ae1e01afa6cd5869 100644 (file)
        };
 };
 
+&dwi_bl {
+       status = "okay";
+};
+
 &serial0 {
        status = "okay";
 };
index 2231db6a739d482de07998c790d71f5ae9eb093d..2ec9e06cc63faeb6befa67fd793990f7e7fd63f8 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 c64ddc402fda2539c830f6b7471324925c9243b3..cc235c5a0c438f3f07ce5318a75dd928615b7818 100644 (file)
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0 &ps_dp>;
+};
+
+&typhoon_opp06 {
+       status = "okay";
+};
+
+&typhoon_opp07 {
+       status = "okay";
+};
index 9c55d339ba4e144b8513fa90d6117aa79880b5cc..99eb8a2b8c734082b7a0e5a9177c227c18871c8b 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 a7cc29e84c8410e426239f20991f7999cce60fbe..85a34dc7bc01088167d33d7b7e1cdb78161c46d8 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 19fabd425c5280f12d8411489a3a2bbcf1493cd9..e4ec8c1977dea58225a7846118e828c157b5574b 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 a76e034c85e346cc95f826f710fa24f63c42fd66..8e2c67e19c4167fc6639458ce79588e153336603 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 1332fd73f50f0830d132a16f261763e66d05d017..1913b7b2c1febce693e2a33e3620176c3c660dfc 100644 (file)
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0_fe &ps_disp0_be &ps_mipi_dsi>;
+};
+
+&hurricane_opp09 {
+       status = "okay";
+};
+
+&hurricane_opp10 {
+       status = "okay";
+};
index 6613fb57c92fffd41c34a61a78e7bb6b1888a5ea..44dc968638b13814baf94e782f2267191ce267f9 100644 (file)
        };
 };
 
+&dwi_bl {
+       status = "okay";
+};
+
 &serial0 {
        status = "okay";
 };
index 81696c6e302c614f3365e8edb9def69ee829b348..1e46e4a3a7f4ad9f00d3dc0724aec2928c54b332 100644 (file)
                };
        };
 };
+
+&framebuffer0 {
+       power-domains = <&ps_disp0_fe &ps_disp0_be &ps_dp>;
+};
+
+&hurricane_opp09 {
+       status = "okay";
+};
+
+&hurricane_opp10 {
+       status = "okay";
+};
index 6e71c3cb5d92b7fbb5a240af46d5ab27273b8cff..48fdbedf74da5cd6137c0b8e6a6130ee5802d2f4 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 e3d6a835410384b08ef74aa8927505703c997ce2..17e294bd7c44c7961cc3ba0ec5f4178840d5b9c6 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 44a0d0ea2ee36e0e778bb6d4e058487b89244fc1..2010b56246f1435d49e5d8ecd9d1fb5380d3364f 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 f4e7074150036cbb3cca92459cd5de46c08123a0..5eaa0a73350f598c0b012f15022fd7fa869dd05a 100644 (file)
                };
        };
 };
+
+&ps_dcs6 {
+       apple,always-on; /* LPDDR4 interface */
+};
+
+&ps_dcs7 {
+       apple,always-on; /* LPDDR4 interface */
+};
index 6c4ed9dc4a504dea7f551846bcba7adb8294709d..5b280c896b760dc8b759bf38dae79060e34dfc19 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 b6505b5185bdd728a7416efaa3dd53d1c6a5fab9..0300ee1a2ffb7d2bd0558f6cb6f86514f4b433a4 100644 (file)
@@ -11,3 +11,7 @@
 / {
        chassis-type = "handset";
 };
+
+&dwi_bl {
+       status = "okay";
+};
index 69258a33ea50086fd7459f07d8814f305f37253b..498f58fb9715d17becde6693f85222d2be1b662e 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 8828d830e5be6f1a080c54628973909d54fa5a05..4d54afcecd50b50ed1fd386ccfc46c373e190e6b 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 56b0c67bfcda321b60c621de092643017693ff91..e2d9439397f71a93c28b75a7eea589f4bcb3e374 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 5988a4eb6efaa008c290b1842e0da2aae8052ba4..8e82231acab59ca0bffdcecfb6681f59661fcd96 100644 (file)
@@ -90,3 +90,5 @@
 &nco_clkref {
        clock-frequency = <900000000>;
 };
+
+#include "spi1-nvram.dtsi"
index 9645861a858c1a7c46c25a614c2cc4b03083bf46..c41c57d63997a59a9fe3c88de31fddb31781398e 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 9b0dad6b618444ac6b1c9735c50cccfc3965f947..97b6a067394e311ed19392a34237c74936dbb7d7 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 0ad908349f55406783942735a2e9dad54cda00ec..be86d34c6696cb47d31696541266e504cee8ce10 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 f5edf61113e7aa869613d672b281f7b7e84efb79..6da35496a4c88dbaba125ebbe8c5a4a428c647c3 100644 (file)
@@ -79,3 +79,5 @@
 &nco_clkref {
        clock-frequency = <900000000>;
 };
+
+#include "spi1-nvram.dtsi"
index 1666e6ab250bc0be9b8318e3c8fc903ccd3f3760..d9b966d68e4fae2dfb21d6fb7a97ebba81643ae8 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 abd01356299581e7bc8fb939856deb6a186479bc..66ba6b02719388003ddea774a39343ba77a5af44 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 bb9b96fb531440c08258c268df39b491eed5a448..56ada8728b608a4ac9fe228ac0812fdeb0350578 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 3a376ab2bb9ee4fc914fa941e3e9b45e745ca1d2..61e064af3337d8d173bee9a2cc77eff5d93d3ec4 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 36657abfc615ad239d8e4b1fa28ea6cafb885db3..f92d2a8a20a2de367b5330d51f6bf56e08a74b90 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 9d017dbed9523e874891f13258d331c3e829ca03..dd7f99f51a75412f5c3b91c3425a63652546fa5e 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 eb446cdc4ab69c27a239b2514e1b370317c2d4e3..fc6ac531d597ec8c93258746b9614d4cd06fd290 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 e58881c61d53eaa9c9df95b874029d61ba23f11b..8df42bedbc036b5e97f6238d64820370043ffef2 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 c5335dd59dfe9fcf8c64d66a466799600f8447b0..3de3a758f113a8a373faca51b3e043d614458497 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 bc0d89427fbe5ae0e69544d64cdc0aeefe87c59a..3a11068f2212f7302778c645d5dd506cde611cfa 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 a3fc945aea1638ebbd11c5fc9689b30a04c309c7..dbea1eefdeecf12895674bf2e63a088058d4a5f7 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 70a8aa1a67911d77a6a25751c84e875f22331328..9b8b1380c4c2bb25f691d72a0217915cf3824889 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 6259186cd4d92ed063f2f7d07cbae978779d08e3..5f3b4014e1521eb2e226797c77d15951cfde3187 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 a8ef4fba16a9e185776da2fcc961bca45f3f9e53..d16490d876874b7bfc9066efdd724bbb52f518b7 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 663ae52b48526e88dd71c8ca6081af6a97bcf462..d4554296523058b7230e826c72680b0a416bc316 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 5eacbd9611eef35520eaac19854128fc9303a2f8..be470cfb03d75de7d6d3fbb1add65c71fbe8f286 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 6069678244f3f043045a287eb2ea95aa55ed7f86..672baba4c8d0527f2de002d49aa96d30a6ae2373 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 c3835b2d860add974527e881f7000338f86ab26b..755cf9cacd227403f1bd2c2822b5920b1830618f 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 8f58c84e14c8ebf7132f1c6cd79bfb4039e581f0..b82e9790ea20593d4f1af5f0620f210feaa14708 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 c528594ac4428e638e137930667df98dba4acb0b..b46566f3ce20569b75917cb964c0a8edfbd86a2f 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 c6ad65becc970f90af720a724f59d18ab1589b86..475cbf9e0d1e2eeebe4fb19a4d3cd7058875a3d6 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 e68a3fd73e17dff40f8f1499b317b8a276f51cac..640c41b51af9884dff582484fe532addf40a5be9 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 68e12a752edde5864b191f25e3d5cbd5e73091dc..c26954e5a6056676b19467a5f31f1f4c6af9c6da 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 e0e9f6f7616d926569417be9957d2dee774ab375..b97bfeb1c30f89610ee6cfcb0440a409c91dc25f 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 59813ef8e2bb3a3d5672ba1c5776cf0e45fb6862..020f20c8ce6672a5b5a1a05c01489741a98dc775 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 c1ca69da3cb8edf5424b727e3ba8bb74affe8e93..32a429437cbdbd153e6efb2bff6cd16e20ecb423 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 ccbd3abedd69411d1f04e5aa765bcd1b0c2c403c..baecf768a2ee08a16c9333e8a1f20fbfef19f865 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 2c75da5f064f2b0cd97f5040febac13c4adc020b..45c9a6d55bc92c549d4d14895a24fa95632283a4 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 ae64731266f35e9a2be8cdff95d87dbcab36e161..23c612e80dd383840f7705e52848858a5fa822f9 100644 (file)
 
        sound {
                compatible = "fsl,imx-audio-tlv320aic32x4";
-               model = "tq-tlv320aic32x";
+               model = "tqm-tlv320aic32";
                audio-cpu = <&sai3>;
                audio-codec = <&tlv320aic3x04>;
        };
index 3ddc5aaa7c5f0ceef0840a7021d1ce31ae404bea..6067ca3be814e1e31dcbb78463d72925b747d8e7 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 b2ac2583a59292077d63c67c894f3a9f60bb47f6..b59da91fdd041f0630e54e7487b67388746fee72 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 e0d3b8cba221e8db99fb92d12fb09d223c29d0ac..7c1c87eab54cc632643f206bd80ce7b7b49505de 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 9d8e7231b7c6374241fa44b1733fc46e6a216ec9..d9f203c795197a8d02e6bfa831df6eacdefdc4b3 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 bb37a32ce4616d9f6f4e9b750c6bddc20fcec239..9e0e2d7271efbe0c9f2713ad9a05a6d0d7db5edc 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 01e5092e4c40a98ab394bb844311e63a48c211b8..c92001c80f1144edadf8c4378ff2fae020bbcbf7 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 81ba8b2831ac41737acf4980b0859c1a5f77ac52..b1c3f331c4ed068416bffeddae4ca33acbb7a642 100644 (file)
@@ -9,8 +9,6 @@
 
 / {
        model = "Toradex Apalis iMX8QM V1.1";
-       compatible = "toradex,apalis-imx8-v1.1",
-                    "fsl,imx8qm";
 };
 
 /* TODO: Cooling Maps */
index 4d6427fbe87529ce3a8d8df83e060e318426c1dc..c18f57039f6efb09e02a67e0d793c925d1ae96db 100644 (file)
@@ -7,8 +7,6 @@
 
 / {
        model = "Toradex Apalis iMX8QM";
-       compatible = "toradex,apalis-imx8",
-                    "fsl,imx8qm";
 };
 
 &ethphy0 {
index 50fd3370f7dce9b35763d5bacb7a500f734a2324..353f825a8ac5db1ac70d1560318c134d188ae7ef 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 b1d0189a1725895404fe168d3ed80eef0a6e1e24..e80f722dbe65f4bc0cd9c0fc2d77a3fe457b4e31 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 be79c793213a53f6b3646f620958f1093ae49e13..a669a5d500d327f36717c2932978e34536093ab3 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 d5abfdb8ede2cd261a358970c2c3a4462138a5b0..ecb35c6b67f597f6eee1b159e5adffee2eb1144f 100644 (file)
                          "",
                          "SODIMM_61",
                          "SODIMM_103",
-                         "",
-                         "",
+                         "SODIMM_79",
+                         "SODIMM_97",
                          "",
                          "SODIMM_25",
                          "SODIMM_27",
index 47c1363a2f99abe0796181d2d33e95b51ba7ee60..119a1620705967a49d09db5d2b62bf2e289850ea 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 8e939d716aac8a6041d805b296d4de443a9b733d..ebbac5f8d2b2ddda614e023909baeaadf0c25fed 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 2e953a05c590ed4d6f65acc442308cef869122ac..9e88c42c3d170dbc70a21e4ac50f0c845f7276e5 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 56766fdb0b1e52b7f609abd4ff8b98a7f9d32ad7..64cd0776b43d38219fee312baadd4665674a141e 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 8bc066c3760cb13be262900958a857564e5e8eba..25ac331f03183e3e8adebcbff4d4deb012cc25ea 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 6b8470cb3461a2e4917e0850bbd91f4a346f45aa..59f057ba6fa7ffb9bbb46eb101980f05516016bb 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 58e3865c28895ba1a1db4ed597d8a2c4ee4d9e1e..7ee1228a50f4f9bfa46edc62d956b47b906326f5 100644 (file)
 
        sound {
                compatible = "fsl,imx-audio-tlv320aic32x4";
-               model = "imx-audio-tlv320aic32x4";
+               model = "tqm-tlv320aic32";
                ssi-controller = <&sai3>;
                audio-codec = <&tlv320aic3x04>;
        };
index 276d1683b03bb0fa431aac63b337b46d8fc0e4be..c4b5663949ade617fe9b7be20a3aebf0b322623a 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 7be430b78c83d3feba4b33b9fb7c744bd55b37ba..ea1456d361a35b0521d8217b001cdc08d2d359d9 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 b9a119eea2b746009f0c825486c4f4b0a6e4001c..c4a195dd67bf51c7fc2f100040ebe69dfe11b053 100644 (file)
@@ -7,6 +7,7 @@
 /dts-v1/;
 
 #include "s32g2.dtsi"
+#include "s32gxxxa-evb.dtsi"
 
 / {
        model = "NXP S32G2 Evaluation Board (S32G-VNP-EVB)";
index aaa61a8ad0dac3105f4619fb582f475a45936c6c..b5ba51696f43221689c4c2e261cf4993036cc38c 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 6c572ffe37caf8d4842e5606ea45682a634c3906..991dbfbfa2033c3759afa88be29ed4f454f0e20e 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 828e353455b54c14b02e4da3b38d17142bfa7d46..802f543cae4af9608a84deb26a3564072a3a069f 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 366912bf3d5e557ac8eacff22e7bdc64a61289ac..58693b774d4c8560bd27d031a5b2b5e38c0e22e9 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 79a55a0fa2f1a3cb58a921691146c8ef7e2bcc1a..4c6a075908d1f8e3b9bba7cf9f0a2220819ea188 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 75377c292bcb6a57ea12215a9f4439c600942161..605f5be1538c863e4072770a1cb649b02dc326e6 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 0cfb38492021b5fa023b3803a207131c0050fdad..bd4e61d5448eae3d02da0860e16db684620d2812 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 6715a19c148317c3e9bf254f55602d6385caf6ba..5c4d8f379704e863819b81db402e8056185f7737 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 b3cc2b7b5d192351ef8500c67c1d8c3514d842a2..97a180c8dcd918f5cd654f1630e0ee99abd72b19 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 2a8aa3901a9fa4c4e024952b0f65a386f42f4d25..75401eab4d420eb13a670570f776dcb8ff93e33a 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 b03af87611a97fbb07b334c607cb26eadf819a2d..48a7f50fb427dcb40d815d90099bfbc1c384c0ed 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 c5a834b33b7744258268eb760c7372fdf1ed4ae8..1542d836c090074ef2890a17a86cfb896075f4e1 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 56930f2ce4814ee58ebd06b095db146a5cc55340..9f4bafeddd82f79de5bb88ab2b5b427254fc6221 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 54453b0a91f9697f563f5a59f229f3491b608327..f4d73c8b1a6d31f29ae899be68bebcf096a1c66d 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 3a9b6907185d0363dff41178543a0210ce99dbf7..24282084570787630cb0beeab3997b943bdf45dc 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 02ae1e153288212c0d44116441e067207255ccb4..b99ac4c03a488b36a8be54cbed1db01d0f2b7265 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 9603223dd761f1a5c84ee8aeaf29d5461094fa58..75b0fdc3efb2e9a59c1ff4008dba4b52d14a2594 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 4e46326dd123cb066943e5bb03457f052c4b41fa..570f901b4f4af4da81df050d14ea4ad7dc1d5f41 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 2f440711d21d20a6e6cb061c0595342633282d95..710ac44870bd2286c980fa8379fef22b89ad5e2d 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 ba1307c0fadbe016c0f56f0c119f5354e6c722e3..b6fc1887609355cbd599f470f554541224eda6cf 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 225a54ab688dc3db64dfe94fe124a1d18e5fd908..90ae93274a1606e8653bee8b911fd7e6afa69a91 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 9c25a88581e428917695551625ff68705788130b..def25d51c4bf9ad9c1a8ad6dcea3b70a65e97af2 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 22c2d6ebf38187c67623d815b5b0df2ea1de38e8..3efd9b9e68926f79441e36f7265aebe2e024b0db 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 299e814d1deda8a0f5b8b366d64063089cfd1308..32bb56f2fe3f23dce4cb501ed28a053b537513f6 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 3ed6fba1f4383d6353c710d5bdd2355a56201571..82f4dedfc25e546970646b8f9c476ef8c5985501 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 cf6a96ddcf40fccdce6626cf8db8499feb0b968b..f37f49c79a5071723720349513ef04d21adc2837 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 866628679ac7c5b6f216642048d4eeff161b7652..73a570cf10108bd5108a0e388e3522358dff0113 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 8848238f9565dc82fe543e233f21c0dc3bfa75c0..e8af7546e893eddce60db98484bdb6a6f2c83836 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 a3328d05fc94c10968e7d96f22e94375ca89faf6..196793d8715cf7dd33f5df455250de1e767a3cc3 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 fdf88cd0eb029107927c35a59b4b23862d460466..40e1469829212667fc7c8bb66dc705306f0fdc9b 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 d1a7143ef3d406f691c7e6a7f0a141a00c0cc988..2e719ffc82899ffdd06d9a082a39e66efdf011e3 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 2f9ab6b4a2c9c823d7fa7c3b09d2ab492bd38c3d..abb37e5fc2c0a57150a0cfe3bc10b06ba96fd0ac 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 4fd33b0fa56e5b06bdc47760b795c8fd28f65fcf..e3cfd168becce4d154b2adb1df259dc9769430ff 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 1d0a9653e6814f7c0e3a00edb47eb0a7bc6036dd..ec6432c8db7c6ecf7af986c9f44b8d370219c29a 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 161beec0b6b062e5d172855757cfacfc539c693c..a057e119492fd3abe0e34749e05b7b9efa3afa07 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 cb8d54895a77753c760b58b8b5103149e21e2094..a997bbabedd8a9679e9d209225666d7696dd7da2 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 150ad84d5d2b30ab6064c71e1375ce5df5ae4b36..7b10f9c59819a9ad02319f00938f35c931091f9f 100644 (file)
@@ -15,7 +15,8 @@
                        #io-channel-cells = <1>;
                };
 
-               mt6359codec: mt6359codec {
+               mt6359codec: audio-codec {
+                       compatible = "mediatek,mt6359-codec";
                };
 
                regulators {
index b5d4b5baf4785fd1f3703e018c91d0020dba1dff..0d995b342d46315fcb855ca7da2bfdea52bfc608 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 3458be7f7f61140f94d5e47ea87b6551a59bf48d..6d1d8877b43f24d65a90401226e14a200778ee57 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 3935d83a047e0827b6feddceb3e4dcb4fc3407cc..7bc7c2687d6f6bcd47c4d151c1e72bebef6f98d5 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 72852b7600383972d98d9b0edd40b6e99e34a85b..863f3e403de8577da41b17b144cdb17c578b2027 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 757d0afd14fb064fc1de4608e65eb1a561c4dfa6..e0a583ce4a0bb18095a77d23ab8409bb80898979 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 6641b087e7c5f3a957e43ac985137dfd84ac7878..7874c9a20e124c65ace3f90e2ec5bcaf59b69c40 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 b6abecbcfa81064074780fe134ef6fadf2e50dd0..c5254ae0bb99421c31f0d2630b86e0e2e406e6a5 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 338120930b819645662465fa7b3c6be6491764ff..69a8423d3858903325ac807de3ef87c63d2a9e1f 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 5056e07399e23aaac43292d4669b4e393d754f0d..e70599807bb17730030aa6d6ac4393b6a5544bce 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 f013dbad9dc4ea01e4971bf4fd37b867c082063e..4f2dc0a7556610907314184dea2a535e09d76ef0 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 44c61094c4d5f8836964758d14bfe398dbf4c42a..1f8584bd66c33744c3a2f29ae9bb19c934588ce0 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 2bf8c9d02b6ee7542492ca4a5b4a4e39a81e6425..e6d2b3221a3b7a855129258b379ae4bc2fd05449 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 04e4a2f73799d04d50476eb1664b1afdbc66c124..612336713a64ee0681f6ebead04ba4ea293d1a53 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 5950194c9ccb2520d826c4d26f6dc0958a5a17fa..f02c32def593a54531221ec57473a335af08a92f 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 41dc34837b02e7d2a02b720c899524bb35a23c0e..1c922e98441a1aadf0aa3cdd76583a70401a1fa3 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 1c53ccc5e3cbf3ba213535713af44a2a0d909f10..9b9d1d15b0c7eafd3895f02db1bc747d7cc8923c 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 63b94a04308e86bd442d6c1d6558bdcf2fc65825..83ed6ac2a8d8f403fb588edce83dc401065c162f 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 c56824d7f4d834d442a9bf05f898f865e4bfd8ab..0ecdd7243b2eb1abba9adbe9a404b226c29b85ef 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 942e3a0f81ed768021d2ac25f6369998a9fbfd76..b6c84d195c0ef9ae90721fada09ffd46a9c11fa3 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 36e8880537460611ffe64d37159b2db4015e7d90..9ce55b4d2de8921ff6ff2c70bad16eaee07e3f4f 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 19340d13f789f07ed98d32a7b5683a2ee98b6fce..41821354bbdae6dcc26faa42c3b13281927a7ed9 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 09b95f89ee58058874aad577adbb08bfdc4772ec..1667c7157057825e92c6103c9d8fe03dbf1d2b4c 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 43f88c199b7880c8f3936f6b59ab0b3a8df477e1..1489bc8d2f4e6416a9097d1f9586ff42c12e800a 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
        status = "okay";
 };
 
index 375a56b20f267bf0d9300a7657a751becda308cd..a1058415057182ab15fc5a60582de3ea8a4838b3 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>, <&scif_clk_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 05712cd96d28bbdf3e0da8f5df7b1f92579d5f72..380b857fd273eb754d0403aa2f536c6ffb49b20c 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index ab8283656660059a493185d3019617e3f041a887..4f38b01ae18de4f763f9a70110f70a19490a31d4 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 659ae1fed2faa1a4b3578bb30e35c5dbbaedf0aa..4e78139d52f6c853c60e3da103f6b76a46bb3247 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index f065ee90649a4a5e45e80fa8463faec5654479ed..c8b87aed92a368b17c31f73d8caaea2479c6aae6 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 117cb6950f91f9341df0cb1994722d1ad9810944..f2fc2a2035a1d491f23270ca8d49517f5720c95f 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 b78dbd807d155730fe0f41b05850060f83016fbd..57a281fc49775d9e8ae8f7ad413b314a94f86786 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 7655d5e3a034166ecb20adde2cac9adcf58996e6..530ffd29cf13da00c54849e2b030f320a1b4dcbb 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 f845ca604de0696ef8667e52b125f278a7c60085..e4dbda8c34d9eaef387e68f21aef565d7810ef73 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 96f3b5fe7e92cc9b7e98b210ffce3239d1aae387..6ee9cdeb5a3ab478d70c1ad2558a6064f3314329 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 ee80f52dc7cf456ab0af9560ed56810d1ffc2d48..a323ac47ca70f3dbd90b23422262f161189f4f0e 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 3b9066043a71e81f2565fa1aa033fb90c39f072e..49f6d31c5903b8b3c313be03fcca47cfe9f22275 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 557bdf8fab179cf73335016143703ccea93aea9d..136a22ca50b7867426fc9f5a6fe95c4b45703da4 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 9450d8ac94cbe977c464358b9b3a36cc74649e6e..0c005660d8dd309486f9820ad77f32e08c71d5e8 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 32f07aa2731678a5d79f3d5a9df72e601c5aa403..8b594e9e9dc10b4421c8e0e5d4063d427974dea2 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 118e77f4477e389c948da12a27ee5306dc2c37ae..445f5dd7c983f1fa56cbf049f9c55eb547e3cc49 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 38145fd6acf024d9e345210bdb6ec899f98bfcaa..01744496805c3200a28303335369a497baeabab3 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 b409a8d1737e629cb9284e0f26aaf2cf5864526c..c2692d6fd00d708357158920458bcbf12d56cd97 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>, <&scif_clk_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 55a6c622f873250fbc1fa50435faa7b38c13b6e9..f7e506ad7a211a57fc510f50b7c79f6e7065c123 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 233af3081e84a407d35226c692e1e41bc3a815b4..6b8742045836b9b9638b07a1327b4fbcbbc2ede8 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 5f0828a4675b6e508c5dd3104638a4220e421dbb..b66cd7c90d53f74d792c0a4df7a2dc7dab7ad137 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 e8c8fca48b6963c99768568f71d528a17e43b3fc..0916fd57d1f1a0d65b8ec43e1000d19491859e03 100644 (file)
 &scif0 {
        pinctrl-0 = <&scif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        uart-has-rtscts;
        status = "okay";
index fe6d97859e4a82260ef64f08354fa3120169496b..f1613bfd16320c9de928add5f34a43742e2caacb 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 e03baefb6a98b07016d427d45fcca627048d418e..1781bb79a6196f9e64d39a92423e0ecdfb54c8be 100644 (file)
 &hscif0 {
        pinctrl-0 = <&hscif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        uart-has-rtscts;
        status = "okay";
index 5d38669ed1ec3440d35de0e81a0019fbae2d940f..ad2b0398d35431a1c5816c18ab3683ee4b9278bd 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 054498e54730b49c6595dac165dbe08f81122879..b496495c59a6dc9beea018dd9709d78d0ab72282 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 5d71d52f9c654783a4cc944b1ece42bf55f353c8..67b18f2bffbd0683098a5c9add34803c018bda99 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 104f740d20d315d43af9d0e63e418155f14a600c..1760720b71287043778d8988212165e7e5e69f90 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 18fd52f55de5b75b30c539563b107b6bd9a5f561..4d890e0617aff9470bf8611030b16995150275fa 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 d0c01c0fdda2ff7946e4818f942db00b361d6f60..8524a1e7205eaed06591bc40706263ff35d8d66a 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 a9b98db9ef959af53ecb1140cb3636f1df5b11c4..0364f89776e6bd09600d3b4b228036be843a4707 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 200e9ea8919354baf2179324f351b644aab77c70..c93aa16d0a6ec3d50c3bd6070c4a5da50054424a 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 1c550b22b164ed9007f01aa032f3cfb2d6fd5617..0cd00bb05191c3efa945d13233899d950e7544f8 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 0b705c987b6c04258da9f5c792c66813483bb768..063eca0ba3e2f3a280aa8c68eb8c5c3d2e24ba84 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 6b583ae2ac529e609903f24fdd434f90aff6133b..f4ba050beb0dcee772f7ea30116dc2ea39ded19a 100644 (file)
@@ -26,3 +26,7 @@
 &rtxin_clk {
        clock-frequency = <32768>;
 };
+
+&wdt1 {
+       status = "okay";
+};
index ef12c1c462a7a52a4893bc72a2af4145bb9243b7..39845faec89438c722c365efdc284df6929e0649 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 81b4ffd1417d7f56f532cb1718646ec972162080..5e044a4d023436425c3ee51518998463fe91332b 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 06c7e9746304f53b23f55a039bfdd0d1cf897607..68971c870d1722fc9cb2d1e5d9c9da80de3139db 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 8ae6af1af094906fcc4fbeb8557df6dafe621199..4caa0281a687e269abbcb467bfa4aca4a1458886 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 4cf632bc46215fdadd3674d47d965d960ad8282c..67a0057a3383da29bf56772ec003818a0362768e 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 f01d91aaadf3b92f73cf5f9a8c3e7d7b952b1f95..fd75801c329e81cd6f4fc7728268b0857406d360 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 0c58d816c375fdbca790c1b6a28908ef922b392b..fcab957b54f70479e6481e066935a8382e206505 100644 (file)
 &scif2 {
        pinctrl-0 = <&scif2_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index f24814d7c924ed5119748ead7585a75a8d49e9ca..b4024e85ae5aa9bfed2c0e771d56b8e49ee98bc7 100644 (file)
 &hscif0 {
        pinctrl-0 = <&hscif0_pins>;
        pinctrl-names = "default";
+       bootph-all;
 
        status = "okay";
 };
index 9017c4475a7c7c306a484181610adfea0b90ae90..a5d1c1008e7e6e5e0917f800d905587545422041 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 1edfd643b25ae81ea538a6328fae645b5027ad60..a334ef0629d1bb8bd0d36c03245f7e970da7cabe 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 80db778c9684833c1d5b69ad55817d746facffae..b60e68faa83aa93bec04b11992b02c8ffbcbb405 100644 (file)
@@ -26,5 +26,5 @@
 };
 
 &vcc3v3_btreg {
-       enable-gpios = <&gpio1 RK_PC3 GPIO_ACTIVE_HIGH>;
+       gpios = <&gpio1 RK_PC3 GPIO_ACTIVE_HIGH>;
 };
index 165d09ccb942448c0b92bc7b148032238b4caa0b..5886b802c5202b79939794d182651c89adb1f57d 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 1a59e8b1dc46e00c0e54335804c79c96b6fa653a..91cf4cd3fae29b32851aad029cd6e90a72a03c1a 100644 (file)
 };
 
 &i2c3 {
+       status = "okay";
+
        eeprom@50 {
                reg = <0x50>;
                compatible = "atmel,24c01";
index e80412abec081f131271be933ee5805ee237b5af..142244d5270608050c3da0e58db167f16b40174b 100644 (file)
        };
 };
 
-&i2c3 {
-       status = "okay";
-};
-
 &i2s0_8ch {
        rockchip,trcm-sync-tx-only;
 
index 629121de5a13d682eeaf202487076bad95a80125..5e71819489920ed66cd324812f25bdeb16892725 100644 (file)
 
 &pwm5 {
        status = "okay";
-       pinctrl-names = "active";
+       pinctrl-names = "default";
        pinctrl-0 = <&pwm5_pin_pull_down>;
 };
 
index a94114fb7cc1d1635e1148575e1ebf6801f802ab..96c27fc5005d1f11b9426629896a29726905d1eb 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 6310b58de77fb682a1db7a48e8849b1da2e853ef..a4bdd87d0729f2eadafdacb76c333e0c500517f6 100644 (file)
        status = "okay";
 };
 
+&u2phy_otg {
+       status = "okay";
+};
+
 &uart2 {
        status = "okay";
 };
 
+&usb20_otg {
+       status = "okay";
+};
+
 &usbdrd3 {
        dr_mode = "host";
        status = "okay";
index b169be06d4d1f79fbdef9e550acac8d829aede39..c8eb5481f43d020853a3ba89515303e3e440c2f4 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 947bbd62a6b09ce55320d0889ee8cf50ca59dfd4..f2234dabd66411ccf6d0a59e970b00cad0a266f0 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 995b30a7aae01a0326e9f80d6be930f227968539..e00fbaa8acc1685af46495c0dfc9bdac7e6e991c 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 e2e9279fa267df0e30fab0f991cd0bf7033d1220..8e3858cf988cb81a104a644f104ba32277f80770 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 541dca12bf1a1f48253b24ddbc0dc876ee2b248f..046dbe329017867d03f3db816885bd0f6eca880d 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 d2cdb63d4a9d795da6453863d04784cf3f75c7ba..57a446b5cbd6c61d4c90f36bc54c8c03c915f4cc 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 e58faa985aa4d72af13cfc5e43eb47c79280a33b..26c3559d6a6deb35391310911b5cb3d4139b1be3 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 a483514717640f179abe5cfa49ed15eae4bb3757..e7ba477e75f9bf4854d0ff4900422e362777801e 100644 (file)
        rockchip,default-sample-phase = <90>;
        status = "okay";
 
-       sdio-wifi@1 {
+       wifi@1 {
                compatible = "brcm,bcm4329-fmac";
                reg = <1>;
                interrupt-parent = <&gpio2>;
index 2d3ae15448224834a986b4018381e4fd6f40a5ea..3613661417b2c613275b7f1babbad3e74c156f82 100644 (file)
@@ -9,6 +9,8 @@
 #include "rk3566.dtsi"
 
 / {
+       chassis-type = "tablet";
+
        aliases {
                mmc0 = &sdhci;
        };
index 98e75df8b15823c5fdf594be771e81a1962ea305..3c127c5c2607a5f6e971f4fed6d9673a19f40bed 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 24928a129446e23c8fe8207c0ed8f0b366c09a1c..5707321a1144fcca99ba61f7764e0d47daa38bd6 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 7bd32d230ad2f1fd7af4f3f1710270213e2ceaf9..b80d628c426b7183693fc0b7356259f4a20739d2 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 ac79140a9ecd63e6ea752667e341a05bf6726471..44cfdfeed6681388202fa8f91683d1b86f3f8d54 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 e5539062911405926c674464beb6455feb689856..fd2214b6fad408f9a5a6998adc67447a8160e6ed 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 7c7331936a7fd532038273f932028aa7dcabf71e..314067ba6f3c4f725fdfff0442cd44d86b1293a4 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 782ca000a644becebcbefa7288aea6ca3750fb08..e368691fd28ec099bff9c6f35265e52658886bf9 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 4dde954043ef6ef5921763a2694cc5f80c7a0011..ebb5fc8bb8b1363127b9d3782801c4a79b678a92 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 a3138d2d384c628ae2b518441145d12e73d19ee1..e44125e9a8fb6def6a87472884bdf990d49b1d5f 100644 (file)
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &saradc {
        vref-supply = <&avcc_1v8_s0>;
        status = "okay";
index 08f09053a06646fe5bddf02ec4fd5894ddb8f535..ae9274365bedf17fe2d21549fb321cb2ccdb78d8 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 c3abdfb04f8f4a14540d55c6ba79929c83e973b2..1e18ad93ba0ebdad31642b88ff0f90ef4e8dc76f 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 9d525c8ff725b91fd13c120bf1e698951c9194e2..9eda69722665fdf67b60adc253be41ee8a820c44 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
index bc6b43a771537b7b10fa4937d327ef9cdf33b55e..6dc10da5215f962d43ff363ef266d3dbae876804 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
index 71ed680621b880dd2a001d5fa4f46d389f7ac5cd..cc37f082adea0f848e8e84b0bb780b1cf673355d 100644 (file)
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        hym8563 {
                hym8563_int: hym8563-int {
index 5e72d0eff0e0f0a2bba718bc67dc2dc8f9ac183f..8a783dc64c0ef3d7c19358ae0d6e020eedfd2130 100644 (file)
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        leds {
                led_user_en: led_user_en {
index 7125790bbed2264c643ec44856ef6cc85c8b25b0..08920344a4b8d27302387d43f459ba00798a332d 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 ba49f0bbaac62356cbd537d3178be094a311ae66..8e912da299a218b61623e6973d2f955504bd44aa 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 840b638af1c2457f01c31a5522a919cbbfc53ddc..099edb3fd0f6bc560351e5f6fbf2cafec01b134d 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 3900513173892330d5bedf23dd20165f88ae6fcb..4331cdc70f973dc23fb494ac4dba2a569745e4a8 100644 (file)
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        leds {
                led_rgb_b: led-rgb-b {
index 42c523b553c98b1a1952240e424db2fdc2976469..80e16ea4154c0ef06f2785005ca129f12fcbdfc9 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 2be5251d3e3be640bd96caebaea5e0e2cfd9abc2..e086114c7634874eb1eed6bd03bd6d0b587a269c 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
index b3a04ca370bb925b3caba40cdfc14cc2bd3e4229..8171fbfd819a7b087752080e7e8dd4d8bade6533 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
index e3a9598b99fca8873fb4d511f82b9e2af612b8f3..af431fdcbea7a64d9fac77208f100cac1a296615 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 4791b77f3571db3a888c015596b4cc1863fdc3f7..73d8ce4fde2b8144b2e9cf4854e759141c20f119 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 7f457ab78015a352cacecea2d3f8fc7652196117..9fceea6c1398e92114dcb735cf2babb7d05d67a5 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 cb350727d11680b6d5f67b9a0d66d346993a4023..bbe500cc924b4c4c1ddd833c32c39cf6c20b60e3 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 1c0851b45eb8eef5e2626dfde8e6c145392754a9..fbe1d5c06d903340ee9faa6a34cc6f7289957a09 100644 (file)
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        pcie2 {
                pcie2_0_rst: pcie2-0-rst {
index 87090cb98020b9c427cec53d8c93faab8f48766e..f748c6f760d80269d8e13261d2e516236176c14d 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 ce44549babf48ab7e259a070b66a376e887dde99..8b1d35760c3bc918c7ddf35bcd070c9ba17b2818 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 255e33c5dbdc0806c98e4652d95bd64ad57a6eb0..121e4d1c3fa5dab0d08edf7cba692a765b48f7b4 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 a98e804a09495c65454c5262c8c8ceebf06d0569..91d56c34a1e456e18db31e1bbe7252b7e4632588 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 088cfade6f6f14b6383ab844fa174c69fa711fc0..78aaa6635b5d20a650aba8d8c2d0d4f498ff0d33 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 2a0590209462eac2a91d8f66c6cc8520f6d53742..7de17117df7aef45baa7cd5e1e43fc7a6a719cbe 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 d597112f1d5b8ee0b6a4fa17086c8671a5102583..d22068475c5dc6cb885f878f3f527a66edf1ba70 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 3187b4918a300dae49fe05d760fb7e1fd55f14d5..a3d8ff647839a900ece2ca9113754c7b20605641 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 e8fa449517c27c3be48324e91c033865416b2b2a..c4933a08dd1e3c92f3e0747135faf97c5eeca906 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 3cbee5b974700d1e687973566aea229ddc92174a..5a428e00ab938ee500561472d55d743f531d3039 100644 (file)
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        rtl8211f {
                rtl8211f_rst: rtl8211f-rst {
index 6bc46734cc1407833f1133dc640ef57f214d94db..60ad272982ad512d611f4eec0b4ef6d52322eb78 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 bce72bac4503b5e5fc7c3d01a240eadf6d5aaae2..3045cb3bd68c638a645e9e0cafe2dde260c58a91 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 9c394f733bbfbba5a547bebcdcaa4f0794539647..8b717c4017a46ac658a6a105519770c3e6e881ee 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 bc4077575beb6298917ff545ae5eb721bf1c4651..9f4aca9c2e3f9780802912da9211a9e872f7eb20 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 812bba0aef1a8b48488339162f232bde30077592..873a2bd6a6de6744542ae5ccab0956b7f73a9fa4 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 4a3aa80f2226fd8eaed69ffd68c1d3d0a0a49178..4189a88ecf40f1cb34119eb52d876fcf8b6add60 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 ac48e7fd3923f4222929afb03b608a647d2c2ed8..88a5e822ed17d4eae555b420f9eb3b75fa5b017e 100644 (file)
        };
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        vdd_sd {
                vdd_sd_en: vdd-sd-en {
index d2eddea1840f4fd489e06072b99a97804c48294b..fbf062ec3bf17ac6966318be55243e6f2b87a9aa 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        gpio-key {
                key1_pin: key1-pin {
index 8f034c6d494c4a5c79857948e3fc52ac7ce08a8e..a72063c55140105d5098f1cd7ebf79ad4e90e47c 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        lcd {
                lcd_pwren: lcd-pwren {
index d86aeacca238d917782c30e618d9db5e327b970c..4fedc50cce8c8601fedbe0f7fff719fade27a145 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 70a43432bdc57df21dadf22e2936aa92a0d33d1a..f894742b1ebef15e943e7f0894f7ae95ac03e40b 100644 (file)
        };
 };
 
-&hdptxphy_hdmi0 {
+&hdptxphy0 {
        status = "okay";
 };
 
        status = "okay";
 };
 
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
 &pinctrl {
        leds {
                io_led: io-led {
index 9b14d5383cdc16947c955b1c6e2a32a50c5df3e6..dd7317bab6135c266f5e767f5efc0fa7ae936183 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 f3c6cdfd7008c5b736ba75f5210d0eddb5b43489..87110f91e4895ad701940c91c6cb372667193b48 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 690b4ed9c29b928216832b6e82ffe6cbb9ad7333..9951eef9507cc3946cc590ab453250d80d4b05f1 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 2ef4cbaec7892701ed94c145727beb66c54d867f..55ed418c023bc1f03a04514d12a0950ee9f498bb 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 9202181fbd6528e92f6f440bb0f48dc4fde2674b..fcc4cb2e9389bca81f099f12fed4f5f518a83b4b 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 75c80290b12abad4739a4029864ea1c0de32a965..a5469f2712f0945d5717d9570767fedf2681013a 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 0469c766b769e46068f23e0073f951aa094c456f..9ed9d703ff24d80171fdb29abbb0d5e3819c8a90 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 a5aceaa396705147089146df6e477d75c2d0589c..147d56b879843ec832d0849e6ed877aa83a72229 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 a6f0d87a50d8a7ebdb61e609e8071d6681dbec9a..1c9d95696c839a51b607839abb9429a8de6fa620 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 b33aff0d65c9def755f8dda9eb9feda7bc74e5c8..bd6a00d13aea758ac71c85e5958c8f171abfb6ec 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 6f32135f00a551cfea4cc896fc03147271eab9b7..6757b37a9de3deb511d3f57e42bf3911f89aa5ea 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 420c77c8e9e5e2e8e9df4baf98dd2b1463ec4842..6aea9d3f134e4bce2ea0fa71007848dbda4383e8 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 ad71d2f27f538d68644491bc6c1831acdd9263cb..d29f524600af017af607e2cb6122d3a581575ffc 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 922cad14c9f8a91eb1b5ce8c5a4b30eb8af400d1..aab74d6019b0a309475bfc7e7798fbc33f8d8b0b 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 2f129e8cd5b9f127b1d1baab17be868938fae013..d52cb2a5a589a8e5eb325fd90324d57ec1e3783b 100644 (file)
@@ -12,6 +12,8 @@
 
 / {
        aliases {
+               serial0 = &wkup_uart0;
+               serial1 = &mcu_uart0;
                serial2 = &main_uart0;
                mmc0 = &sdhci0;
                mmc1 = &sdhci1;
index 99a6fdfaa7fb823ac144a3e5e67bcf01c887c05f..d9d491b12c33a869f0dc8848c68fd58f79761f67 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 bc8e1ce11047bbbcf64d0cdac620efaaf3973a7f..f63c101b7d61a13ca799d6af6007281522e18a67 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 4c1e02a4e7a25c8fc6f55f06fe27d0f2b41483d7..4421852161dd65b30df96ac2dc5a5b2dfb921991 100644 (file)
                #phy-cells = <0>;
                cdns,phy-type = <PHY_TYPE_USB3>;
                resets = <&serdes_wiz3 1>, <&serdes_wiz3 2>;
+               bootph-all;
        };
 };
 
index 69b3d1ed8a21c26916721be6d10af1ba63ded156..440ef57be2943caa778a877bb5133dbd882d6ed8 100644 (file)
                #phy-cells = <0>;
                cdns,phy-type = <PHY_TYPE_USB3>;
                resets = <&serdes_wiz3 1>, <&serdes_wiz3 2>;
+               bootph-all;
        };
 };
 
index b3a0385ed3d86cc6e63fe88a554364325fd7967c..54fc5c4f8c3f521046d55d4366e6e7ae5f9e9dbd 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 d184e9c1a0a598b1a15503978c96ed55f5782375..2127316f36a34baf2bccce4d073945a51cefcdd7 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 3ac2d45a055857e6606d1b77258cd701e325a79a..6850f50530f12b6e231a9e0c9fd74def3fd8a541 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 dcd2c7c39ec3b36b8a3142f977c9218d545e81d4..c1f9573557d0f002818b0fd85bd2ebbbec873282 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 83bbf94b58d157c5ae59c93662312a453c54580a..1944616ab3579a54b3221c67c6d8eb2d296751c2 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 60d1b1acf9a0307d118bb70562cfa10c1800a5ea..52e122fc7c9e7986345c3206407f0282849a149b 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 23cf26cc3e5f19703220bd20a8e12e1e61a1e941..3514ea78f525651050f58765f9606fb675e3daac 100644 (file)
 
        #address-cells = <1>;
        #size-cells = <0>;
-       spidev@0 {
-               compatible = "rohm,dh2228fv";
-               spi-max-frequency = <100000000>;
-               reg = <0>;
-       };
 };
 
 &ehci0 {
index 5d33f26fd28c8bd8729ef0039fc3caa071b1159d..8455778928b71cee92fe3167bd8499afd88a239c 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 e8df70dd42bf8e4cef2109e687ee080cc290d8a1..6d2c8aea5f499d344026d4d419a3697f2ce30c24 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 4a1a43f351d39625b520a16d035cacd2e29d157c..dabd5ed778b739b62f5c6e7348f1837a207dbb6c 100644 (file)
                #interrupt-cells = <1>;
        };
 
+       coherency-manager {
+               compatible = "mobileye,eyeq6-cm";
+       };
+
        xtal: clock-30000000 {
                compatible = "fixed-clock";
                #clock-cells = <0>;
index 18107ca0a06b14794f5d5479bafaafae68592d30..7743d014631a8c9feab99aadfc08904a89fc0ca7 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 1f6e5320f4860c0236d6451e2e5763884e9f4827..d66045948a8331d7775b1ffec6aae9f1e35de392 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 8de8f89f31b85cc9c5dd85aca778958d220b786f..da483ee65b61562d1cd81bd5b00729c51f268663 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 45a15e005cc4524d482849cee324bab240fb1a23..0212700c4fb4d4dafd66645a9151d468cbaec4c9 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 5884fd48f59a62988f5b2246cc609745812ecbea..51a40ab6df2b6d75f8b4aab11d61dc0d2388a889 100644 (file)
@@ -1,6 +1,6 @@
 /dts-v1/;
 
-/include/ "mt7628a.dtsi"
+#include "mt7628a.dtsi"
 
 / {
        compatible = "onion,omega2+", "ralink,mt7688a-soc", "ralink,mt7628a-soc";
index 8fc1987d9063cf4b57061e1dd94718848a9d8d4f..1f2ea34343246943ccfc67a9363b469178f7c1ee 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 759bc1dd5b83e8a3db0cc44473a0198b30bd6982..9854a4b120e9f1910a54e6f385b8139d13b43e30 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 23062333a76d7ffb41c0b0e970d648fa4c1396e4..a7d9bb9bc1afb706d1ee076977f1128782d10fb6 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 61132cf157e5a1a3bec99c6024e9cbe92a56f3e7..11d111a0603717aa8eaeae697dbfba8afb03a90f 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 c22bc84df21975a4e16067a7d2aca64021776800..a095a1fe94155e3579f48e2710d6f9b2fa5249e5 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 1cdbb09297ef9c335f063ccc655794b93849d2df..fab3d552404d84ab8d96e25de8392e70c733dee1 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 722106e39194bbf853f01c2af72fd5b8f5f3436c..ce522a6af262028b4408caded901f1e4192ae3a0 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 17577457d15986582f6955e1e5545f009a155df2..f2e57ea3a60ceaed8079a42b6af9b1e80785d4a7 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 269e930b3b0b14a2bf6a76261062294c1d003c72..c4e4d2a9b4606a689e3f9eefd1ca5bcf1aa3395f 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 1069134f2e12ab7f622d5f618a85a5eafb0511f1..a6dda55a2d1ddbdbb6ae5b5cc0a5ba25aaef618e 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 8230f06ddf48a6e3c7178f1b43cbffdec1d651cb..36a9860f31dacbdae6fc25b0176f134441563575 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 9a56de7b91d64c48ebaea95daaba794a6822e729..a57dca891965a62810d4bc2df1ad6736362b260f 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 c18822ec849f353bc296965d2d600a3df314cff6..58cd546392e056a3bbdf9c27a73c050de1060fba 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 be596d01ff8d33bcdbe431d9731a55ee190ad5b3..34645a5f6038389cd00d4940947c6bb71d39ec6f 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 e62ac51ac55abd922b5ef796ba8c2196383850c4..aa8b7fcc125d71eec12b09493964d90f5dfed27c 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 48fb5091b8176664876bae8e984b7a8e40e39e37..c2f70f5e2918fcd30dc862d932dc6eec8b9fb1b7 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 30b0715196b66637d582df794572967823a47ed9..8d9ce8b69a71be78ca57618ae842c9f415648450 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 b764d4d92fd9026debfbe4f33336c0df0ac6b5ac..31e825be2065af19968bf4fb0bbc025494f44d6f 100644 (file)
        pinctrl-0 = <&usb0_pins>;
        status = "okay";
 };
+
+&usb_cdns3 {
+       phys = <&usbphy0>, <&pciephy0>;
+       phy-names = "cdns3,usb2-phy", "cdns3,usb3-phy";
+};
index 0d8339357bad32f95ffa0396e9a7cea328d705ff..0ba74ef046792fd63ed6cf971fa1438609b06fb1 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>;